赋值运算符
直接赋值
很简单,=
左侧写要赋值的对象,右侧写要赋予的值。比如:
c
int a = 0; // 在定义对象 a 的同时,将 0 赋值给 a
a = 5; // 把 5 这个值给 a 这个对象```
1
2
2
复合赋值
复合赋值运算符是在简单赋值运算符 =
前面加上其他运算符构成,可以将双目运算和赋值结合在一起,使得代码更简洁、可读性更强。
下面我们来详细了解各种复合赋值运算符:
加法复合赋值 +=
a += b;
等效于 a = a + b;
。 它将运算符左侧对象的值与右侧操作数相加,然后将结果赋值给左侧的对象。
示例:
c
int a = 10;
a += 5; // 等效于 a = a + 5;
// 此时 a 的值为 15
1
2
3
2
3
减法复合赋值 -=
a -= b;
等效于 a = a - b;
。 它将运算符左侧对象的值与右侧操作数相减,然后将结果赋值给左侧的对象。
示例:
c
int a = 10;
a -= 5; // 等效于 a = a - 5;
// 此时 a 的值为 5
1
2
3
2
3
乘法复合赋值 *=
a *= b;
等效于 a = a * b;
。 它将运算符左侧对象的值与右侧操作数相乘,然后将结果赋值给左侧的对象。
示例:
c
int a = 10;
a *= 5; // 等效于 a = a * 5;
// 此时 a 的值为 50
1
2
3
2
3
除法复合赋值 /=
a /= b;
等效于 a = a / b;
。 它将运算符左侧对象的值与右侧操作数相除,然后将结果赋值给左侧的对象。
示例:
c
int a = 10;
a /= 5; // 等效于 a = a / 5;
// 此时 a 的值为 2
1
2
3
2
3
注意: 如果操作数是整数,则结果为整数除法,小数部分会被舍去。
取模复合赋值 %=
a %= b;
等效于 a = a % b;
。 它将运算符左侧对象的值与右侧操作数进行取模(求余数)运算,然后将结果赋值给左侧的对象。
示例:
c
int a = 10;
a %= 3; // 等效于 a = a % 3;
// 此时 a 的值为 1
1
2
3
2
3
位运算复合赋值
除了算术运算符,位运算符也可以与赋值运算符结合。
- 按位与复合赋值
&=
:a &= b;
等效于a = a & b;
。 - 按位或复合赋值
|=
:a |= b;
等效于a = a | b;
。 - 按位异或复合赋值
^=
:a ^= b;
等效于a = a ^ b;
。 - 左移复合赋值
<<=
:a <<= b;
等效于a = a << b;
。 - 右移复合赋值
>>=
:a >>= b;
等效于a = a >> b;
。
示例:
c
int n = 10; // 二进制为 1010
int MASK = 12; // 二进制为 1100
n &= MASK; // 执行按位与运算,结果为 1000(十进制为 8)
// 此时 n 的值为 8
1
2
3
4
2
3
4