Неопределенное поведение == нельзя гарантировать, что результат всегда будет одинаковым, когда вы запускаете его в одних и тех же условиях, или результат не может быть гарантированно всегда одинаковым, когда вы используете разные компиляторы или среды выполнения для его выполнения.
В вашем коде, поскольку он использует оператор сравнения равенства, который не указывает, какая сторона операндов должна выполняться первой, --i
или i++
может в конечном итоге выполняться первой, и ваш ответ будет зависеть от фактического реализация компилятора. Если --i
выполняется первым, это будет 4 == 4
, i=5; если i++
будет реализовано первым, это будет 5 == 5
, i=5.
Тот факт, что ответ может оказаться таким же, не мешает компилятору предупредить вас о том, что это неопределенная операция.
Теперь, если это язык, который определяет, что левая сторона (или правая сторона) всегда должна выполняться первой, тогда поведение больше не будет неопределенным.
person
Stephen Chung
schedule
14.03.2011
Console.WriteLine()
делает в C? - person Prasoon Saurav   schedule 14.03.2011