Я использую Coverity Prevent в проекте, чтобы найти ошибки.
Он сообщает об ошибке для этого выражения (имена переменных, конечно, изменены):
x=
(a>= b) ?
++x: 0;
Сообщение:
Ошибка EVALUATION_ORDER: в "
x=(a>= b) ? ++x: 0;
", "x
" написано в "x
" (назначение LHS) и написано в "(a>= b) ? ++x: 0;
", но порядок, в котором происходят побочные эффекты, undefined, потому что нет промежуточной точки последовательности. КОНЕЦ СООБЩЕНИЯ
Пока я понимаю, что "x = x++
" - undefined, для меня это немного сложнее. Является ли это ложным положительным или нет?