C 复合赋值运算符是否会短路

C 复合赋值运算符是否会短路,c,C,我有一些代码可以循环一组a值,并用每个值调用一个函数 像耶 for (int i=0; i<limit; i++) {booleanReturn |= doFunc(i);} 用于(int i=0;i运算符|=是运算符而非运算符的化合物。前者不会短路。并且不存在运算符|。因此,您的问题的答案是否定的。如果它有副作用,则必须调用funct。如果它没有副作用,则根据as-if规则只要你看不出它们之间的区别,实现就可以自由地做任何事情。不,使用位运算符时没有短路,在任何想要遵循规范的编译器中都

我有一些代码可以循环一组a值,并用每个值调用一个函数

像耶

for (int i=0; i<limit; i++) {booleanReturn |= doFunc(i);}

用于(int i=0;i运算符
|=
运算符
而非
运算符
的化合物。前者不会短路。并且不存在运算符
|
。因此,您的问题的答案是否定的。如果它有副作用,则必须调用
funct
。如果它没有副作用,则根据as-if规则只要你看不出它们之间的区别,实现就可以自由地做任何事情。

不,使用位运算符时没有短路,在任何想要遵循规范的编译器中都没有。短路只适用于逻辑运算符。