逗号运算符

计算其左操作数,丢弃结果值,然后计算其权限操作数,结果产生其最右操作数的值。

int x = 42, y = 42;
printf("%i\n", (x *= 2, y)); /* Outputs "42". */

逗号运算符在其操作数之间引入了一个序列点

请注意,函数调用中使用的逗号分隔参数不是逗号运算符,而是称为与逗号运算符不同的分隔**符。因此,它没有逗号运算符的属性。

上面的 printf() 调用包含逗号运算符分隔符

printf("%i\n", (x *= 2, y)); /* Outputs "42". */
/*           ^        ^ this is a comma operator */
/*           this is a separator */

逗号运算符通常用于初始化部分以及 for 循环的更新部分。例如:

for(k = 1; k < 10; printf("\%d\\n", k), k += 2);   /*outputs the odd numbers below 9/*

/* outputs sum to first 9 natural numbers */
for(sumk = 1, k = 1; k < 10; k++, sumk += k)
    printf("\%5d\%5d\\n", k, sumk);