2.3.3 逗号运算符与逗号表达式
C语言中逗号","也是一种运算符,称为逗号运算符。其功能是把几个表达式连接起来组成一个表达式,称为逗号表达式。它的一般形式是:
表达式1,表达式2,……,表达式n
其求值过程是从左到右分别求出这n个表达式的值,并以表达式n的值作为整个逗号表达式的值。如有以下语句:
先计算括号内逗号表达式的值,该逗号表达式的值为30,再把30赋给变量a,结果a的值为30。
逗号表达式的运算优先级是最低的,赋值运算符的优先级高于它。如有以下程序代码:
int a=5; a=(a=3*5,a*4),a+5; |
那么最后a的值是多少呢?第二条语句可以分为两部分,"a =(a = 3*5,a*4)"和"a + 5",先算左边,再计算右边。因为逗号运算符的优先级最低,所以最外面的逗号是最后求值的。"a =(a = 3*5,a*4)"中先求括号中的部分"a = 3*5,a*4"。"a = 3*5,a*4"中又先计算"a = 3*5",此时a等于15,经过"a*4"后,a值变为60。再把60赋给a。最后计算"a + 5","a + 5"的运算对a的值没有影响,a只是加了5而没有把加后的结果赋给a,所以对a没有影响。最后a的值是60。