2.7 逗号运算符和逗号表达式

“,”是C语言提供的一种特殊的运算符,称为逗号运算符。逗号运算符的结合性为从左到右。在所有运算符中,逗号运算符的优先级最低。

由逗号运算符将表达式连接起来的式子称为逗号表达式。

逗号表达式的一般格式为:

  表达式1,表达式2,…,表达式n

逗号表达式的求解过程为:先求表达式1的值,再求表达式2的值,依次进行,最后计算表达式n,整个逗号表达式的值就是最后一个表达式的值。例如,逗号表达式3+5,1+2的值为3。又如,逗号表达式a=2*3,a*5的求解过程是:先计算a=2*3,经过计算和赋值后得到a的值为6,然后计算a*5,得30,因此整个逗号表达式的值为30。

使用逗号表达式要注意以下几个方面:

①逗号表达式可以和另一个表达式组成一个新的逗号表达式。

例如:逗号表达式(a=2*3,a*5),a+5

表达式1是(a=2*3,a*5),表达式2是a+5,先计算表达式1的值为30,再计算表达式2的值为35,因此整个逗号表达式的值为35。

②并不是所有的逗号都是逗号运算符。

例如:

int a,b,c;       /*这里的逗号是变量之间的分隔符,而不是逗号运算符*/

printf("%d,%d,%d\n",(a,b,c),a,b);       /*只有(a,b,c)里的逗号才是逗号运算符*/

【例2.13】  逗号运算符运算举例。

#include<stdio.h>

void main()

{ int a=3,b=4,c=5,x1,x2,x3,x4,x5,x6;

 x1=(a,b,c);

 x2=a,b,c;

 x3=(a++,--b,a+b);

 x4=a++,--b,a+b;

 x5=(a++,--b,a+b+c++);

 x6=((a,b,c),a+b);

 printf("x1=%d,x2=%d,x3=%d,x4=%d,x5=%d,x6=%d\n",x1,x2,x3,x4,x5,x6);

}

程序运行结果:

x1=5,x2=3,x3=7,x4=4,x5=12,x6=7