在C ++中,如果我有一个已经为true的布尔值,并且对它执行| =,是否可以保证仍然执行运算符右边的内容?

例如:

bool myBool = true;
myBool |= someFcnThatReturnsBoolean();


我发现它正在执行该功能,但是我需要知道是否可以通过标准明确保证可以执行该功能。我不愿遇到一个问题,即它会基于某些优化或某些编译器而停止执行。

最佳答案

bool myBool = true;
myBool |= someFcnThatReturnsBoolean();


相当于

bool myBool = true;
myBool = myBool | someFcnThatReturnsBoolean();


按位OR(|)将始终对两个操作数求值,因此将始终调用您的函数。

关于c++ - | =运算符(operator),可能会进行短路评估?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23249665/

10-12 03:01