Имеет ли int a = 1, b = a ++; вызывать поведение undefined?
Вызывает ли int a=1, b=a++;
поведение undefined? Между инициализацией a
и ее доступом и модификацией в инициализаторе для b
не существует последовательности точек последовательности, но, насколько я могу судить, инициализация не является "модификацией" объекта; инициализатор указан, чтобы дать "начальное значение" объекта. Per 6.7.8 Инициализация, пункт 8:
Инициализатор определяет начальное значение, хранящееся в объекте.
и кажется разумным взять "начальную" как секвенированную перед любым доступом к объекту. Рассматривался ли этот вопрос раньше, и есть ли принятая интерпретация?
Ответы
Ответ 1
Он не вызывает поведение undefined. В пункте 6.7.6 (3) указано
Полный декларатор - это декларатор, который не является частью другого декларатора. Конец полного declarator - это точка последовательности.
что конец полного декларатора является точкой последовательности.
int a = 1, b = a++;
// ^ end of full declarator