|=属于复合的赋值运算符
复合的赋值运算符一般形式为:
变量 双目运算符 = 表达式
它等效于
变量=变量 运算符 表达式
例如:
a+=5 等价于 a=a+5
x*=y+7 等价于 x=x*(y+7)
r%=p 等价于 r=r%p
复合赋值符这种写法,对初学者可能不习惯,但十分有利于编译处理,能提高编译效率并产生质量较高的目标代码。
举例说明Flag|=KEY_EVENT;
uint32 Flag= 0;
KEY_EVENT=(1<<2)
Flag|=KEY_EVENT;
Flag=Flag|KEY_EVENT;//第一步Flag先与KEY_EVENT按位进行或运算;
KEY_EVENT 二进制为 0100
最终运算000 | 0100 结果为0100
Flag的值为0100换为十进制就是4
下面说下 &=~
uint32 Flag= 8;
KEY_EVENT=(1<<2)
Flag&=~KEY_EVENT;等价于Flag=Flag&(~KEY_EVENT)
首先换为二进制Flag 为1000 ,KEY_EVENT为 0100
~KEY_EVENT 为1011
1000&1011 结果为1000