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