Запятая в списке переменных - это точка последовательности? - PullRequest
20 голосов
/ 20 июня 2011

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

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

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

Ответы [ 2 ]

20 голосов
/ 20 июня 2011

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

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

Что даже дополнительно объясняется в сноске как

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

T D1, D2, ... Dn;

обычно эквивалентно

T D1; T D2; ... T Dn;
8 голосов
/ 20 июня 2011

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

...