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)

 

posted on 2023-07-07 16:37  新西兰程序员  阅读(722)  评论(0编辑  收藏  举报