C 语言程序设计能力教程(第四版)
上QQ阅读APP看书,第一时间看更新

2.3.5 逗号运算符及其表达式

逗号在C语言中可以作为分隔符,又可以作为运算符。逗号运算符又称顺序求值运算符,用它可将两个表达式连接起来,它的优先级最低。

逗号表达式的一般形式如下:

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

在执行时,上述表达式的求解过程为:先计算表达式1的值,然后依次计算其后面的各个表达式的值,最后求出表达式n的值,并将最后一个表达式的值作为整个逗号表达式的值。逗号运算符如表2-12所示。

表2-12 逗号运算符

在只允许出现一个表达式的地方出现多个表达式时,常采用逗号表达式的形式。

注意:逗号运算符所构成的表达式是按顺序执行的。

【例2.11】逗号运算符的使用。

(1)a=3*5,a*4

(2)x=(a=3,6*3)

(3)x=a=3,6*a

上述表达式的计算结果分别为:

表达式(1)先计算a=3*5,结果为15;再计算a*4,结果为60,整个表达式的值取最后表达式的值,为60。

表达式(2)是一个赋值表达式,将一个逗号表达式的值赋给x,x的值等于3*6,即18。

表达式(3)是一个逗号表达式,它包括一个赋值表达式和一个算术表达式。赋值运算的优先级高于逗号运算,所以先计算a=3,x=a,得值x=3;再计算6*a,结果为18,整个表达式的值取后面的表达式的值,为18。

思考:上面的表达式(2)和(3)有什么区别?

事实上,逗号表达式无非是把若干表达式“串联”起来。在许多情况下,使用逗号表达式的目的只是想分别得到各个表达式的值,而并非一定需要得到和使用整个逗号表达式的值,逗号表达式最常用于循环语句中,详见第5章。

注意:在计算表达式时,要考虑每一个运算符的优先级、结合方向和结果类型。算术运算符的优先级高于赋值运算符,赋值运算符的优先级又高于逗号运算符。