c++ - bool a |= mayRun(); 的右 watch 达式是什么时候?被处决?

标签 c++ compiler-construction compound-assignment

假设代码片段

bool a;
a = true;
a |= mayRun();

a = false;
a |= mayRun();

在什么情况下执行 mayRun()?

所有的解释都告诉我,那 a |= b; 相当于 a = a | b;

但不能和例子一样 arr[i++] |= b; 表示。

最佳答案

会一直执行,因为短路不适用于位运算(只适用于&&||等逻辑运算)。

请注意,这种误解可能会导致严重的错误 - 开发人员会假设存在短路,但实际上并没有,所有表达式部分始终在执行,这会改变程序逻辑。

关于c++ - bool a |= mayRun(); 的右 watch 达式是什么时候?被处决?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20327121/

相关文章:

C++ 使这个 Djikstra 实现更快

java - 在 Android 中使用 Ada 代码

javascript - 加法赋值 += 表达式中的行为

c++ - 复合赋值和添加运算符重载

java - 关注JLS词汇

c++ - 无法从 const int* 转换为 int*

c++ - false 隐式转换为空指针

c++ - itk 图像梯度的 x 和 y 分量

compiler-construction - 是否有可能制作高级编译语言?

compiler-construction - 是什么让 COBOL 及其性能(与其年龄相比)如此之快?