在C ++中,如果我有一个已经为真的布尔值,并且我对它执行了| =,那么保证它仍然可以执行运算符右边的任何内容吗?
例如:
bool myBool = true;
myBool |= someFcnThatReturnsBoolean();
我发现它正在执行该功能,但我需要知道标准是否明确保证它是否可以保证执行。我讨厌遇到一个基于某些优化或某些编译器停止执行的问题。
答案 0 :(得分:3)
bool myBool = true;
myBool |= someFcnThatReturnsBoolean();
等同于
bool myBool = true;
myBool = myBool | someFcnThatReturnsBoolean();
按位OR(|
)将始终评估两个操作数,因此将始终调用您的函数。
答案 1 :(得分:-1)
尝试使用这个,恕我直言更清晰的语法:
bool myBool = true;
// ...
if(someFcnThatReturnsBoolean())
myBool = true;