C语言中的代码行为:
x = x |= (1 << 3);
这个代码出现了一个CPPCheck错误:"表达式“x=x|=1”的求值顺序依赖于副作用的顺序"。
而下面这一行:
x |= (1 << 3);
is ok.
I thought
x = x |= (1 << 3);
应该与
x = x = x | (1 << 3);
这只是
x = (x = (x | (1 << 3)));
实际上,对 x 的外部赋值没有任何影响,这意味着结果与
x |= (1 << 3);
那么CppCheck在这里到底在抱怨什么?
编辑:我认为这是与上面提到的问题讨论的j = j++
是否与j++
相同的重复问题。