Это потому, что C11 попытался охватить многопоточное / параллельное выполнение. Фундаментальные правила выполнения программы в «абстрактной машине» добавили этот громоздкий текст между C99 и C11 (C11 5.1.2.3/3) :
Последовательность перед асимметричной c, транзитивной, парой -опулярная связь между оценками, выполняемыми одним потоком, что приводит к частичному порядку среди этих оценок. Для любых двух оценок A и B, если A упорядочен до B, то выполнение A должно предшествовать выполнению B. (И наоборот, если A упорядочен до B, то B упорядочен после A.) Если A не упорядочен до или после B, то A и B не имеют последовательности. Вычисления A и B имеют неопределенную последовательность, когда A упорядочен либо до, либо после B, но не указано, какая именно 13) Наличие точки последовательности между вычислением выражений A и B подразумевает, что каждое вычисление значения и побочный эффект, связанный с A упорядочивается перед каждым вычислением значения и побочным эффектом, связанным с B. (Сводка точек последовательности приведена в приложении C.)
Следовательно, цитируемая вами часть (C99 6.5 / 2) была соответственно изменились, чтобы соответствовать определению выполнения программы в абстрактной машине, которое предположительно теперь также охватывает параллельное выполнение. К сожалению, поскольку текст C99 был намного более читабельным. Технически ничего не изменилось, если не рассматривать параллельное выполнение. Правила о точках последовательности из C99 по-прежнему применяются, это просто другая формулировка. Это изменение также означало синхронизацию C11 с C ++ 11, в котором действуют аналогичные правила.