Возможный дубликат:
Запятая в списке переменных — это точка последовательности?
Если у меня есть следующий код, запятая действует как обычная точка последовательности, или поведение не определено?
int i = 1, j = i;
Я на самом деле не планирую использовать это (наш внутренний стандарт запрещает даже int i, j
), но мне было любопытно, и это оказалось странно сложно Google.
Это четко определено:
3) Каждый init-декларатор в объявлении анализируется отдельно, как если бы он был в объявлении сам по себе.
И примечание:
90) Объявление с несколькими деклараторами обычно эквивалентно
соответствующая последовательность объявлений, каждая с одним
описатель. То есть
T D1, D2, ... Dn;
обычно эквивалентно
T D1; T D2; ... T Dn;
где T является decl-specier-seq, и каждый Di является
INIT-описатель.
Для полноты (потому что в записке написано обычно):
Исключение возникает, когда имя введено одним из деклараторов.
скрывает имя типа, используемое спецификаторами dcl, чтобы при одинаковом
Спецификаторы dcl используются в последующем объявлении, они не имеют
то же значение, что и вstruct S { ... }; S S, T;
// объявляем два
экземпляры структуры Swhich is not equivalent to
struct S {…}; S
S; S T; // ошибка`
Других решений пока нет …