我在项目中使用Coverity Prevent来查找错误.
它报告此表达式的错误(变量名称当然已更改):
x=
(a>= b) ?
++x: 0;
Run Code Online (Sandbox Code Playgroud)
消息是:
EVALUATION_ORDER缺陷:在"
x=(a>= b) ? ++x: 0;"中,"x"写在"x"(赋值LHS)中并用"(a>= b) ? ++x: 0;" 写入,但副作用发生的顺序是不确定的,因为没有中间序列点.消息结束
虽然我可以理解" x = x++"是不确定的,但这对我来说有点困难.这个是假阳性吗?