菜鸡自学
C语言中,逗号运算符的优先级最低。
第一个b,后面赋值表达式中,自加“++”的优先级高于,逗号的优先级,所以给b赋值为++a 为4 。
第二个b,后面有带括号的逗号运算符,所以要自左至右的计算各个表达式的值,但是赋值给b的值,是整个逗号表达式的值,即为最后一个表达式的值a+5,为b=((++a)+5)=9。
不妨考虑一下a在运算后取值是多少?
int a; int b; a = 3; b=++a,4-2,a+5,a*4,a++; //优先级 printf("b1= %d.a= %dn",b,a); // b=++a=4,a=++a再a++等于5; a = 3; //a值重新赋回来 b=(++a,4-2,a*2,a+5,a-1); //结合性 printf("b2= %d.a= %dn",b,a); // b=((++a)-1)=3,a=++a等于4;考虑优先级的同时,还有区别a++和++a两种情况
a = 3; b=a++,4-2,a+5,a*4,a++; //优先级 printf("b1= %d.a= %dn",b,a); //b=a++既a自增前的数值3 a = 3; b=++a,4-2,a+5,a*4,a++; //优先级 printf("b1= %d.a= %dn",b,a); // b=++a,既a自增后的数值4运算符优先级