C++中的复合运算符|=和&=
在C#中我们经常见到的复合运算符是+=和-=, 比如
a+= b; 等价于 a = a + b;
a-=b; 等价于a = a - b;
C++中,除了这两个外,还有类似的复合运算符 |= 和 &=
首先要明白 | 和 & 是二进制运算符,分别为二进制 按位或 , 按位与
| => 按位或 运算符 , 二进制运算符,在同一位上数字相同时为0, 数字不同时结果为1
& => 按位与 运算符, 二进制运算符,当且仅当运算数都为1时,结果为1, 其他都为0 => 1 & 1 == 1, 1 & 0 == 0, 0 & 1 = =0, 0 & 0 = =0
所以
a |= b 等价于 a = a | b => 对a 和 b 进行按位 或 运算, 结果赋给a
a &= b 等价于 a = a & b => 对a 和 b进行按位 与 运算,结果赋给a
比如 a = 2, b = 3, 那么 a|= b的值是什么?
a = 2 => 对应二进制值为 0000010
b = 3 => 对应二进制值为 0000011
那么 a|= b 等价于 a = a | b, 也就是
0000010
|
0000011
=
00000001
也就是说运算结果是 a = 1 (1的二进制值为 00000001)