逗号运算符和逗号表达式
形式:表达式1,表达式2,……表达式n
结合性:从左向右
优先级: 所有运算符中优先级最低
逗号表达式的值:等于表达式n的值
求解过程:先求表达式1,再求表达式2,依次求下去,直到求
出表达式n,整个逗号表达式的值就是表达式n的值
例 a=3*5,a*4 //a=15,表达式值60
a=3*5,a*4,a+5 //a=15,表达式值20
例 x=(a=3,6*3) //赋值表达式,表达式值18,x=18
x=a=3,6*a //逗号表达式,表达式值18,x=3
例 a=1;b=2;c=3;
printf(“%d,%d,%d”,a,b,c); //1,2,3
printf(“%d,%d,%d”,(a,b,c),b,c); //3,2,3
逗号运算符和逗号表达式
求解过程分析:
自左至右,依次计算各表达式的值, “表达式n” 的
值即为整个逗号表达式的值。
例如,逗号表达式 “a = 3 * 5, a * 4”的值=60:先求
解a = 3 * 5,得a=15;再求a * 4 = 60,所以逗号表达式
的值=60。
又例如,逗号表达式 “(a = 3 * 5, a * 4), a + 5”的值
=20:先求解a = 3 * 5,得a=15;再求a * 4=60;最后求
解a + 5=20,所以逗号表达式的值=20 。
注意:并不是任何地方出现的逗号,都是逗号运算
符。很多情况下,逗号仅用作分隔符。