测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看
B21

自增自减与复合赋值

引入

章前总览 ++ / -- 让变量加减 1;+= %= 等是“自己运算后再赋给自己”的省写。前置、后置顺序不同,结果可能不同。

本节要点:

  • 后置 ++:先用旧值,再加 1
  • 前置 ++:先加 1,再用新值
  • 复合赋值:z += k ⇔ z = z + k

1 C1. 前置 ++ 与后置 ++

操作数必须是变量,不能是常量或普通表达式。

</> 对比示例

int a = 7, b;
b = a++;              // 后置:先 b=7,再 a→8
cout << a << " " << b << endl;  // 8 7

a = 7;
b = ++a;              // 前置:先 a→8,再 b=8
cout << a << " " << b << endl;  // 8 8
  • -- 同理:后置先用再减,前置先减再用。
  • 单独写 a++; 时,前置后置效果一样,都是 a 加 1。

易错点

  • c = a ++ b; 不合法——++ 不能夹在两个变量中间这样写。
  • 不要写成 a ** b(不是乘方)。

2 C2. 复合赋值运算符

z += k 就是 z = z + k。同理有 -= *= /= %=

右边像带括号

  • z -= 5+2 等价于 z = z - (5+2),不是 z - 5 + 2
  • 例:z 原为 13,则 z -= 5+2 后 z=6。

</> 常见写法

z += k;    // z = z + k
z %= 3600; // z = z % 3600
a *= 3;    // a = a * 3
小结

做题时先分清“先改还是后改”。

b = a++;  // b 拿旧 a
b = ++a;  // b 拿新 a
z += k;   // 自己加上 k
里程碑达成:

下一节用 / 与 % 解三道 GESP 真题:买书、休息时间、考试星期几。