在C语言和C++语言中,可以把多个表达式用逗号联接起来(或者说,把这些表分达式用逗号分开),构成一个更大的表达式。其中的逗号称为逗号运算符,所构成的表达式称为逗号表达式。逗号表达式中用逗号分开的表达式分别求值,以最后一个表达式的值作为整个表达式的值。
逗号运算符是二元运算符,逗号表达式的一般形式为:
表达式1 , 表达式2
逗号表达式的一般形式可以扩展为:
表达式1,表达式2,表达式3……表达式n
它的值为表达式n的值。
逗号运算符确保操作数被顺序地处理:先计算左边表达式1的操作数,再计算右边表达式2的操作数。整个逗号表达式的值是表达式2的值。
例如,逗号表达式“3+5,6+8”的值为14。
逗号运算符的特点:
优先级别最低;
自左往右执行表达式;
返回值为表达式最后一个.
逗号运算符的优先级是所有运算符中最低的。如果希望逗号运算的结果用于另一个赋值运算中,就需要使用括号。
因此,下面两个表达式的作用是不同的:
① x=(a=3,6*3)
② x=a=3,6*a
第①个是一个赋值表达式,将一个逗号表达式的值赋给x,x的值等于18。第②个是逗号表达式,它包括一个赋值表达式和一个算术表达式,x的值为3。
其实,逗号表达式无非是把若干个表达式“串联”起来。在许多情况下,使用逗号表达式的目的只是想分别得到各个表达式的值,而并非一定需要得到和使用整个逗号表达式的值,逗号表达式最常用于循环语句(for语句)中.
请注意并不是任何地方出现的逗号都是作为逗号运算符。例如函数参数也是用逗号来间隔的。如
printf("%d,%d,%d",a,b,c);
上一行中的“a,b,c”并不是一个逗号表达式,它是printf函数的3个参数,参数间用逗号间隔。
如果改写为
printf("%d,%d,%d",(a,b,c),b,c);
则“(a,b,c)”是一个逗号表达式,它的值等于c的值。括弧内的逗号不是参数间的分隔符而是逗号运算符。括弧中的内容是一个整体,作为printf函数的一个参数。
注意:并不是任何地方出现的逗号,都是逗号运算符。很多情况下,逗号仅用作分隔符。
逗号表达式的用途:
在for循环里经常会用到,
1、在for里面的应用:
int i;int j;
for(i=0,j=0;i<5;i++,j++)
2、当分隔符:int i,j;
除了在for循环里用到外,我们在宏定义里也经常遇到:
#define SWAP(a,b) a^=b,b^=a,a^=b
而传统多行语句的写法是do {...} while(0);
相比而言,很多时候在宏中还有用逗号表达式写简洁多了。
学习交流,技术探讨,面试指导,简历修改...还有超多源码素材等学习资料,零基础的视频等着你!