c ++中的逗号运算符和逗号分隔符

Gau*_*mar 3 c++ comma-operator

可能重复:
当所有逗号运算符都不作为逗号运算符时?

什么时候逗号(,)表现为运算符?它什么时候表现为分隔符?它的后果是什么.如果可能,请为两者提供小例子.

Bla*_*iev 6

逗号在函数调用,函数声明,初始值设定项和变量声明中表现为分隔符:

f(a, b);
int a[] = {2, 3, 4};
int c = 2, d = 3;
Run Code Online (Sandbox Code Playgroud)

相反,当用于分隔语句时,它的行为与逗号运算符相同:

a = 2, b = 3;
c = (doSomething(), doSomethingElse(), result());
Run Code Online (Sandbox Code Playgroud)

它产生的结果是其最右边的操作数的值,并且保证执行顺序是从左到右,与函数参数的未定义的评估顺序相反.

  • 还有其他情况:`int a = 2,b = 3;`不同于`a = 2,b = 3;`,例如. (3认同)