|= (or_eq) C++ 中的求值顺序

|= (or_eq) order of evaluation in C++

我试图找到以下问题的答案,但没有成功。 我的表达式涉及位 AND 和位 OR(所有无符号长):

A |= B & C

C++ 中的求值顺序是什么? 是 A = A | (B & C) 还是 A = (A | B) & C?还是取决于编译器版本? 谢谢

使用复合赋值运算符 (op=),表达式 E1 op= E2 变为 E1 = E1 op E21。这意味着对于您的代码 E1AE2B & C 所以结果将是

A = A | (B & C)