Изменить, чтобы уточнить: Я не спрашиваю о том, как работает секвенирование .Этот вопрос не является дубликатом вопроса, который был помечен как дубликат.Я уже понимаю, что x++ * ++x
это UB.Я спрашиваю о значении фразы «Порядок вычисления выражений слева направо».
Эта строка взята из книги Бьярна Страуструпа «Путешествие по С ++», 2-е издание.
Я ожидал бы, что это будет означать, что фрагменты типа int x=2;int y=x++ * ++x
четко определены.Оценка слева направо означает, в моем понимании, что x++
оценивается первым (значение 2), ++x
оценивается вторым (значение 4), а окончательное значение y
равно 8
.
Но Clang предупреждает о multiple unsequenced modifications to 'x'
, поэтому я думаю, что мое понимание значения цитаты Страуструпа должно быть неверным.
Кто-нибудь может объяснить, что он на самом деле имеет в виду?