c - &= 和 |= 是否有定义的评估顺序?

标签 c variable-assignment

如果您有一个返回整数的 C 函数,您可以编写如下语句:

MyInt &= MyFunc();

...我们在这里使用按位与赋值运算符。

问题是:是否保证 MyFunc() 被执行,即使 MyInt 等于零?

Likwise,如果我们使用按位或赋值运算符 (|=),即使 MyInt 被设置为全 1,MyFunc() 是否总是会被执行?

换句话说:对于按位运算符,C 中是否允许惰性求值?

最佳答案

没有。按位运算符没有短路。无论 MyInt 的值如何,MyFunc() 的执行都是有保证的。

关于c - &= 和 |= 是否有定义的评估顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1354138/

相关文章:

c - 关于结构的未初始化指针赋值的语义

c - 将全零分配给 C 中的嵌套结构(GCC 版本 < 5)

条件变量和 mutex_unlock

c - 即使命令可用,Execv 也会失败

c - 只读内存和堆内存

PHP - if 语句中的赋值范围

java - 不使用任何日期类计算两个日期之间的天数

c - 位运算剖析

c - 调用 free 后内存使用量不会减少

javascript - 全局变量 JavaScript(改变值)