赋值运算符指南
目录
一、基本赋值运算符(=)
初始化与赋值的区别
连续赋值(链式赋值)
二、复合赋值运算符
基本复合赋值运算符
位运算复合赋值运算符(后期讲解)
三、注意事项
良好实践示例:
一、基本赋值运算符(=)
初始化与赋值的区别
- 在变量创建的时候给⼀个初始值叫初始化,在变量创建好后,再给⼀个值,这叫赋值。
- 赋值操作符 = 是⼀个随时可以给变量赋值的操作符。
int a = 100; // 初始化:创建变量时赋予初始值
a = 200; // 赋值:变量创建后修改其值
连续赋值(链式赋值)
C语言支持连续赋值,但可读性较差:
int a = 3, b = 5, c = 0;
c = b = a + 3; // 从右向左依次赋值:a+3→b→c
推荐写法(更易调试和理解):
int a = 3, b = 5, c = 0;
b = a + 3; // 步骤清晰
c = b; // 便于调试观察
二、复合赋值运算符
基本复合赋值运算符
运算符 | 等价形式 | 说明 |
---|---|---|
+= | a = a + x | 加法赋值 |
-= | a = a - x | 减法赋值 |
*= | a = a * x | 乘法赋值 |
/= | a = a / x | 除法赋值 |
%= | a = a % x | 取模赋值 |
使用示例:
int a = 10;
a += 3; // 等价于 a = a + 3 → a=13
a -= 2; // 等价于 a = a - 2 → a=11
a *= 4; // 等价于 a = a * 4 → a=44
a /= 5; // 等价于 a = a / 5 → a=8
a %= 3; // 等价于 a = a % 3 → a=2
位运算复合赋值运算符(后期讲解)
>>= // 右移赋值 <<= // 左移赋值 &= // 按位与赋值 |= // 按位或赋值 ^= // 按位异或赋值
三、注意事项
-
执行顺序:复合赋值运算符先计算右边表达式(把右边表达式看做一个整体),再与左边变量运算
-
类型转换:右边表达式结果会自动转换为左边变量的类型
-
效率优势:复合形式通常比展开形式效率更高
-
可读性:简单运算推荐使用复合形式,复杂表达式建议拆分
-
副作用:避免在复杂表达式中过度使用复合赋值
良好实践示例:
// 清晰但效率较低的写法
array[index] = array[index] * 2 + 1;// 推荐使用复合赋值运算符
array[index] *= 2;
array[index] += 1;