既然在printf函数中是从右往左进行计算的,最后的结果肯定会受所有的参数所影响,那么如果转义字符和参数数量不相符合时,为什么不是按照逗号运算符的运算规则。
int main(void) {
int a = 21, b = 11;
printf("%d\n", --a+b, --b+a);//为什么这里输出的是30,而不是31.在逗号运算符里面最后输出的结果是最后一个逗号后面的,而printf函数却是从右往左,那不会发生冲突吗?
return 0;
}
实际情况是--a+b 和--b+a都运算了,所以结果是30
顺序是怎么样的。
int main()
{
int i = 3;
printf("%d,%d,%d\n",i,++i,i++);
return 0;
}
结果是443
那你看这题:21 已知int y,a,i=1;,则语句printf("%d,%d",-i++,(y=a=3.6*3));的输出结果为___。
A -1,10 B -2,1.8 C 0,3 D 1,18
结果为A
被弄混了。
看到有解释说是入栈和出栈的顺序问题。
我好像明白了,是从右往左算,最后输出还是从左往右输出。
@shmily涂: https://blog.csdn.net/fu_daxian/article/details/101061093