i = 7, i++, i++; // i becomes 9
отлично.Оператор =
имеет более высокий приоритет, чем ,
, поэтому выражение эквивалентно
(i = 7), i++, i++;
, что является совершенно определенным поведением, поскольку ,
является точкой последовательности.
Насколько
i = ++i + 1; //the behavior is unspecified
касается поведения не определено в C ++ 03 , но четко определено в C ++ 0x .Если у вас есть черновик C ++ 0x, вы можете проверить его в разделе 1.9/15
i = i++ + 1; // the behavior is undefined