“逗号表达式,是C语言中的逗号运算符,优先级别最低,它将两个及其以上的式子连接起来,从左往右逐个计算表达式,整个表达式的值为最后一个表达式的值
所以输出的是b+1 = 8
printf从左到右计算,从右到左输出,不同编译器好像还不一样,如果这里是按照这个规则的话:
1、先算a=a+1得a=5
2、b+a得12
3、b+1得8
4、从右往左输出,根据"%d\n"只输出一个整数加回车,即b+1的值即8
题主可以试试改动一下研究其内部具体的运算逻辑:
比如改成
printf("%d\n",(a=a+1,b+a,b+a));
printf("%d\n",(a=a+1,b+a,b+2));
printf("%d\n",(a=a+1, b = b+a,b+1));
等
这其实就是考的你对操作符的理解。逗号表达式,就是用逗号隔开的多个表达式,从左向右依次执行,整个表达式的结果是最后一个表达式的结果。
如果不是很了解,可以尝试自己动手尝试一下
//尝试交换一下位置,看看输出
printf(“%d\n”,(a=a+1,b+a,b+1));
printf(“%d\n”,(b+1,b+a,a=a+1));
printf(“%d\n”,(b+1,a=a+1,b+a));