返回 课程

信奥AC之路-1级

0% 完成
0/0 步骤
  1. 第1课 开发环境与基础输出
    5 主题|小节
  2. 第2课 算术运算符
    7 主题|小节
  3. 第3课 printf与运算输出
    7 主题|小节
  4. 第4课 数的进制与拆位
    6 主题|小节
  5. 第5课 变量与基础运算
    17 主题|小节
  6. 第6课 常量与取整运算
    8 主题|小节
  7. 第7课 关系运算
    8 主题|小节
  8. 第8课 逻辑运算
    9 主题|小节
  9. 第9课 输入与计算进阶
    10 主题|小节
  10. 第10课 if语句及双分支语句
    8 主题|小节
  11. 第11课 if语句及双分支进阶
    11 主题|小节
  12. 第12课 三目运算
    9 主题|小节
  13. 第13课 多分支、多if和switch语句
    11 主题|小节
  14. 第14课 循环(基本输出)
    7 主题|小节
  15. 第15课 循环(While+If)
    8 主题|小节
  16. 第16课 循环(计数、求和、求乘积)
    10 主题|小节
  17. 第17课 循环进阶(While+)
    8 主题|小节
  18. 第18课 do-while及while其他用法
    8 主题|小节
  19. 第19课 For循环基础
    9 主题|小节
  20. 第20课 For循环进阶
    8 主题|小节
课 5, 主题|小节 7
进行中

5.6 变量的自增自减运算符

2025年9月22日
课 进展
0% 完成

[图片:展示自增自减运算的执行过程]

“现在我们来学习一种特殊的运算,”我说,”它可以让变量的值增加或减少1。”

a) 单独使用时:

int a = 5;
a++; // 等价于 a = a + 1
++a; // 等价于 a = a + 1
// 单独使用时,前置(++a)和后置(a++)效果相同

b) 在表达式中使用时的区别:

int a = 5;
int b = a++; // 后置:先使用a的值(5)赋给b,再将a加1
// 此时 b=5, a=6

int a = 5;
int b = ++a; // 前置:先将a加1,再使用新值(6)赋给b
// 此时 b=6, a=6

// 在表达式中使用
int x = 1;
printf("%dn", x++);  // 输出1,然后x变为2
printf("%dn", ++x);  // x先变为3,然后输出3

// 更复杂的例子
int a = 5;
int b = 2 * a++; // b = 2 * 5 = 10, 然后a变成6
int c = 2 * ++a; // 先a加1变7,然后c = 2 * 7 = 14

c) 多个自增自减运算符:

int x = 1;
int y = x++ + ++x; // 不推荐这样写,因为结果不可预测
// 涉及到求值顺序的问题,在不同编译器可能结果不同

// 连续使用自增自减
int y = 10;
y++++;                // ❌ 错误:不能连续使用自增运算符
++++y;                // ❌ 错误:不能连续使用自增运算符

练习题:

  1. 选择题:以下代码的输出结果是什么?
int a = 5;
printf("%d %dn", a++, ++a);

A. 5 7
B. 5 6
C. 6 7
D. 6 6

正确答案:A
解析:先处理a++,输出5并将a加1变为6,然后处理++a,先将a加1变为7再输出。

  1. 判断题:a++和++a在单独使用时效果完全相同。
    正确答案:√
    解析:当自增运算符单独使用时,前置和后置的效果是一样的,都是将变量的值加1。