Учитывая два варианта: определенный или неопределенный, какой выбор вы бы сделали?
Авторы стандарта имели два варианта: определить поведение или указать его как неопределенное.
Учитывая явно неразумный характер написания такого кода, во-первых, не имеет смысла указывать для него результат. Хотелось бы не поощрять подобный код, а не поощрять его. Это бесполезно или не нужно ни для чего.
Кроме того, комитеты по стандартизации не могут заставить авторов компиляторов что-либо делать. Если бы они требовали определенного поведения, вполне вероятно, что требование было бы проигнорировано.
Есть и практические причины, но я подозреваю, что они были подчинены вышеуказанному общему соображению. Но для записи: любое требуемое поведение для этого вида выражений и связанных с ними видов ограничит способность компилятора генерировать код, выделять общие подвыражения, перемещать объекты между регистрами и памятью и т. Д. C уже был затруднен из-за слабой видимости ограничения. Такие языки, как Fortran, давно поняли, что псевдонимы и глобальные переменные были убийцей оптимизации, и я считаю, что они просто запрещали их.
Я знаю, что вас интересовало конкретное выражение, но точная природа любой данной конструкции не имеет большого значения. Предсказать, что будет делать генератор сложного кода, будет нелегко, и язык пытается не требовать таких предсказаний в глупых случаях.