C++ 中的 |= 运算符是什么意思?
最佳答案
假设您对整数使用内置运算符,或者对用户定义的类使用合理的重载运算符,它们是相同的:
a = a | b;
a |= b;
'|=
' 符号是按位或赋值运算符。它计算 RHS ('b') 与 LHS ('a') 的 OR'ing 值并将结果分配给 'a',但这样做时它只对 'a' 求值一次。
'|=' 运算符的最大优点是当 'a' 本身是一个复杂的表达式时:
something[i].array[j]->bitfield |= 23;
对比:
something[i].array[i]->bitfield = something[i].array[j]->bitfield | 23;
这种差异是有意还是无意?
...
答案:故意 - 显示速记表达式的优势......复杂表达式中的第一个实际上等同于:
something[i].array[j]->bitfield = something[i].array[j]->bitfield | 23;
类似的注释适用于所有复合赋值运算符:
+= -= *= /= %=
&= |= ^=
<<= >>=
任何复合运算符表达式:
a XX= b
相当于:
a = (a) XX (b);
除了 a
只计算一次。请注意此处的括号 - 它显示了分组的工作方式。
关于c++ - |= 运算符在 C++ 中意味着什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4217762/