В приведенном выше случае,
c=(b=a+2) -(a=1);
значение a
, изменяется и считывается без точки последовательности между ними, так что это undefined behavior.
Цитирование C11
, Приложение §J.2, Неопределенного поведения
Побочного эффект от скалярного объекта unsequenced по отношению к любому другому побочному эффекту на тот же скалярном объект или вычисления значения с помощью значение того же скаляра объект.
Также в связи с главы §6.5
Группировка операторов и операндов обозначается синтаксисом. 85) За исключением случаев, указанных ниже , побочные эффекты и вычисления значений подвыражений не имеют никакого значения. 86)
Таким образом, нет никакой гарантии, подвыражении будет получить оценку первым.
это неопределенное поведение. – BLUEPIXY
Какая черта «C от Денниса»? Если вы говорите о [K & R] (https://en.wikipedia.org/wiki/The_C_Programming_Language), он ничего не говорит о выполнении слева направо. – user2357112
Вы уверены, что король говорит об этом? Какое издание и номер страницы? –