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

问题描述

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

A |= B & C

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

解决方法

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

A = A | (B & C)