Так почему же i = ++ i + 1 четко определено в C ++ 11?

мы виделиДругой аналогичныйвопросы и читатьдефект об этом. Но я все еще нене понимаю Почемуi = ++i + 1 четко определены в C ++ 11, когдаi = i++ + 1 не является? Как стандарт делает это хорошо определенным?

По моей разработке у меня есть следующеепоследовательность перед график (где стрелка представляет последовательность перед отношением, и все является вычислением значения, если не указано иное): I '

i = ++i + 1
     ^
     |
assignment (side effect on i)
 ^      ^
 |      |
☆i   ++i + 1
     ||    ^
    i+=1   |
     ^     1
     |
★assignment (side effect on i)
  ^      ^
  |      |
  i      1

мы отметили побочный эффектi с черной звездой и вычислением значенияi с белой звездой. Похоже, они не упорядочены по отношению друг к другу (согласно моей логике). И стандарт говорит:

Если побочный эффект на скалярный объект не секвенирован относительно другого побочного эффекта на тот же скалярный объект или вычисления значения с использованием значения того же скалярного объекта, поведение не определено.

Объяснение вотчет о дефектах А не было»не поможет мне понять. Какое отношение имеет преобразование lvalue в rvalue? Что я ошибся?

Ответы на вопрос(3)

Ваш ответ на вопрос