sji*_*sji 4 c++ operator-precedence
可能重复:
变量列表中的逗号是序列点吗?
如果我有以下代码,逗号是一个正常的序列点,还是行为未定义?
int i = 1, j = i;
Run Code Online (Sandbox Code Playgroud)
我实际上并不打算使用这个(我们的内部标准甚至禁止int i, j),但我很好奇,它对谷歌来说很奇怪.
Luc*_*ore 13
它的定义很明确:
3)声明中的每个init-declarator都被单独分析,就好像它本身就在声明中一样.
并注意:
90)具有多个声明符的声明通常等效于具有单个声明符的相应声明序列.那是
T D1, D2, ... Dn;通常是等价的
T D1; T D2; ... T Dn;其中T是decl-specifier-seq,每个Di都是init-declarator.
为了完整性(因为通常说明):
当其中一个声明符引入的名称隐藏了dcl-specifiers使用的类型名称时会发生异常,因此当在后续声明中使用相同的dcl-specifiers时,它们的含义不同,如
struct S { ... }; S S, T;//声明struct Swhich is not equivalent tostruct S {...}的两个实例; S S; ST; //错误