逗号运算符 comma operator
逗号运算符最常用在 for 循环的循环头中.
程序示例:
#include<stdio.h>
#define FIRST_OZ 46
#define NEXT_OZ 20
int main(void)
{
int ounces;
float cost;
printf("ounces cost\n");
for (ounces = 1, cost = FIRST_OZ; ounces <= 16; ounces++, cost += NEXT_OZ)
{
printf("%3d $%5.2f\n", ounces, cost);
}
return 0;
}
结果:
ounces cost
1 $46.00
2 $66.00
3 $86.00
4 $106.00
5 $126.00
6 $146.00
7 $166.00
8 $186.00
9 $206.00
10 $226.00
11 $246.00
12 $266.00
13 $286.00
14 $306.00
15 $326.00
16 $346.00
逗号运算符是一个序列点。
整个逗号表达式的值是右侧项的值.
例如下面这条语句:
x = (y = 3, (z = ++y + 2) + 5);
先将 3 赋值给 y, 再递增 y 得到 y 等于 4, 再加 2, 得到 6, 赋值给 z, 再加 5 得到 11, 最终将 11 赋值给 x.
下面这条语句:
x = 7, 10;
被视为一个逗号表达式语句, 逗号左侧是一个赋值表达式, x 的值为 7. 逗号右侧是 10.
这和下面这两条语句等价:
x = 7;
10;
任何表达式后面加上分号就得到了一个语句, 因此 10; 也是一个语句, 但是什么也不做.
下面的语句:
x = (100, 200);
是将 200 赋值给 x.
逗号不一定都是逗号运算符,也可能是分隔符。
下面的语句中,
int a = 10, b = 9;
printf("a = %d b = %d\n", a, b);
逗号都是分隔符。