3

可能重复:
什么时候逗号运算符不充当逗号运算符?

comma(,) 什么时候充当运算符,什么时候充当分隔符?它的后果是什么。如果可能,请为两者都举几个小例子。

4

3 回答 3

6

逗号在函数调用、函数声明、初始化器和变量声明中充当分隔符:

f(a, b);
int a[] = {2, 3, 4};
int c = 2, d = 3;

相比之下,当用于分隔语句时,它的行为类似于逗号运算符:

a = 2, b = 3;
c = (doSomething(), doSomethingElse(), result());

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

于 2011-06-28T07:08:19.757 回答
3

逗号为Operator

逗号运算符(由标记 , 表示)是一个二元运算符,它计算其第一个操作数并丢弃结果,然后计算第二个操作数并返回此值(和类型)。逗号运算符在所有 C 运算符中具有最低优先级,并充当序列点。

例子:

/int i = (5, 10);  /* 10 is assigned to i*/

逗号运算符的主要用途是在以下情况下产生副作用:

  • 调用一个函数。
  • 进入或重复一个迭代循环。
  • 测试一个条件。
  • 其他需要副作用但并不立即需要表达式结果的情况。

逗号为Separator

当与函数调用和定义、函数之类的宏、变量声明、枚举声明和类似结构一起使用时,逗号充当分隔符。

例子:

int a = 1, 
b = 2; 
void fun(x, y);

另一个例子:

void fun(f1(), f2()); 
于 2011-06-28T07:08:46.920 回答
1

基本上,它在需要表达式的任何地方都充当运算符(与表达式列表相反)。

于 2011-06-28T07:11:47.817 回答