Двойное присвоение одной и той же переменной в одном выражении в C ++ 11

Стандарт C ++ 11 (5.17, expr.ass) утверждает, что

Во всех случаях присваивание выполняется после вычисления значения правого и левого операндов и до вычисления значения выражения присваивания. Что касается вызова функции с неопределенной последовательностью, операция составного присваивания является единственной оценкой

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

Будет ли данный код:

int a = 0;
a = (a+=1) = 10;

if ( a == 10 ) {
    printf("this is defined");
} else {
    printf("undefined"); 
}

всегда оценивать?a==10

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

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