逗号运算符
计算其左操作数,丢弃结果值,然后计算其权限操作数,结果产生其最右操作数的值。
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);