赋值语句中的 op= 复合赋值形式
C语言提供了一种缩写方式,将”运算 + 赋值”合并为一条语句,称为复合赋值运算符。
1. 基本语法与等价关系
variable op= expression;
等价于:
variable = variable op (expression);
注意:右侧表达式整体被括号包裹,优先级高于 op。
2. 算术复合赋值运算符
op 可以是 + - * / % 中的一员:
| 简写形式 | 等价展开 | 示例(初始 number = 10) |
|---|---|---|
number += 1 | number = number + 1 | number 变为 11 |
number *= 3 | number = number * 3 | number 变为 30 |
number /= 3 | number = number / 3 | number 变为 3 |
number %= 3 | number = number % 3 | number 变为 1 |
number -= 2 | number = number - 2 | number 变为 8 |
3. 代码示例
示例一:+= 递增
#include <stdio.h>
int main(void)
{
int number = 0;
number += 1;
printf("%d\n", number); // 输出 1
return 0;
}Code language: PHP (php)
示例二:*= 乘法
#include <stdio.h>
int main(void)
{
int number = 3;
number *= 2;
printf("%d\n", number); // 输出 6
return 0;
}Code language: PHP (php)
示例三:右侧为表达式(自动加括号)
#include <stdio.h>
int main(void)
{
int b = 4;
int number = 3;
number *= b + 2; // 等价于 number = number * (b + 2)
printf("%d\n", number); // 输出 21(3 * 6)
return 0;
}Code language: PHP (php)
示例四:/= 与表达式
a /= b + 1; // 等价于 a = a / (b + 1),不是 a = a / b + 1Code language: JavaScript (javascript)
4. 其他复合赋值运算符
op 还可以是位移和位运算符,后续学习:
| 运算符 | 含义 | 等价形式 |
|---|---|---|
<<= | 左移赋值 | var = var << n |
>>= | 右移赋值 | var = var >> n |
&= | 按位与赋值 | var = var & mask |
^= | 按位异或赋值 | var = var ^ mask |
\|= | 按位或赋值 | var = var \| mask |