C语言基础丨运算符之逗号运算符(八)

在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);

相比而言,很多时候在宏中还有用逗号表达式写简洁多了。

最后,如果你正在学习编程遇到瓶颈,感到迷茫,困惑,值得加入我的【C语言C++学习企鹅圈子

学习交流,技术探讨,面试指导,简历修改...还有超多源码素材等学习资料,零基础的视频等着你!

原文地址:https://www.cnblogs.com/mu-ge/p/14369676.html