2011-06-28 70 views

回答

6

逗号表现为在函数调用,函数声明,初始化和变量声明的隔板:

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

与此相反,用于分离的语句时,它表现为逗号运算:

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

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

+3

还有其他一些情况:'int a = 2,b = 3;'与'a = 2,b = 3;'不同。 –

+0

@David:更新了我的答案。 –

+0

还是......这份清单涵盖了一些但并非全部。即使所有内容都是正确的,因为我们不能保持一致,因为对于初学者来说,@Als中显示的一些案例会回答(为什么它没有upvotes?) –

3

逗号作为Operator

逗号操作符(令牌表示,)是评价其第一操作数和丢弃结果的二进制运算符,它然后评估第二个操作数并返回该值(和类型)。逗号运算符具有任何C运算符的最低优先级,并充当序列点。

实施例:

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

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

  • 调用函数。
  • 输入或重复迭代循环。
  • 测试条件。
  • 其他需要副作用但不立即需要表达式结果的情况。用函数调用和定义,函数等宏,变量声明,enum声明,和类似的构建体中使用时

逗号作为Separator

逗号充当隔板。

实施例:

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

又如:

void fun(f1(), f2()); 
1

基本上,它无处不在表现为一个操作符的表达式需要(与表达式的列表)。