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

Является ли запятая в списке переменных точкой последовательности?

В следующем типе кода есть точка последовательности между каждой конструкцией переменных или результат undefined?

int a = 0;
int b = a++, c = a++;

Мне не удалось найти в стандарте конкретную ссылку на точку последовательности здесь. Означает ли это, что это undefined, или просто я потерпел неудачу в своем поиске? Завершение выражения является точкой последовательности, но имеет ли указанная выше инициализация?

4b9b3361

Ответ 1

Я считаю, что поведение хорошо определено из-за 8 [dcl.decl]/3

Каждый init-declarator в декларации анализируется отдельно, как если бы он был в декларации сам по себе.

Что еще дополнительно поясняется в сноске как

Объявление с несколькими деклараторами обычно эквивалентно соответствующей последовательности объявлений, каждая с одним описатель. Это

T D1, D2, ... Dn;

обычно равнозначен

T D1; T D2; ... T Dn;

Ответ 2

Как вы подозреваете, после каждого выражения инициализатора есть точка последовательности, потому что это полные выражения (1.9/16, 1.9/12).