Так почему же 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? Что я ошибся?