Подтвердить что ты не робот

Имеет ли int a = 1, b = a ++; вызывать поведение undefined?

Вызывает ли int a=1, b=a++; поведение undefined? Между инициализацией a и ее доступом и модификацией в инициализаторе для b не существует последовательности точек последовательности, но, насколько я могу судить, инициализация не является "модификацией" объекта; инициализатор указан, чтобы дать "начальное значение" объекта. Per 6.7.8 Инициализация, пункт 8:

Инициализатор определяет начальное значение, хранящееся в объекте.

и кажется разумным взять "начальную" как секвенированную перед любым доступом к объекту. Рассматривался ли этот вопрос раньше, и есть ли принятая интерпретация?

4b9b3361

Ответ 1

Он не вызывает поведение undefined. В пункте 6.7.6 (3) указано

Полный декларатор - это декларатор, который не является частью другого декларатора. Конец полного declarator - это точка последовательности.

что конец полного декларатора является точкой последовательности.

int a = 1, b = a++;
     //  ^ end of full declarator