6

Есть (++i)++ неопределенное поведение? Возможно ли, что побочный эффект приращения префикса происходит после извлечения инкрементного объекта для приращения постфикса для работы? Это показалось мне странным.Является ли (++ i) ++ неопределенным поведением?

Чувство кишки говорит, что это не определено в C++ 03 и четко определено в C++ 11. Я прав?

+0

Ваше чувство кишки правильное. – ybungalobill 2010-12-03 15:31:33

ответ

11

Чувство кишки говорит, что это не определено в C++ 03 и четко определено в C++ 0x.

Да, вы правы. Поведение не определено в C++ 03, потому что вы пытаетесь изменить i более одного раза между двумя точками последовательности.

Поведение хорошо определено в C++ 0x, потому что (++i)++ эквивалентно (i += 1)++. Побочные эффекты оператора += секвенированы относительно ++ (пошаговый прирост), и поэтому поведение хорошо определено.

0

Это неопределенное поведение, так как i модифицируется более одного раза между двумя точками последовательности.