为什么结果是321,而非123

来源:百度知道 编辑:UC知道 时间:2024/07/04 12:34:21
#include <stdio.h>
main()
{
int a=1;
printf("%d%d%d\n",a++,a++,a++);
}

printf语句的运算顺序是右结合的,也就是说是从右向左计算表达式的值的

所以printf("%d%d%d\n",a++,a++,a++); 的运算顺序是:
先计算最右的表达式a++,结果为1,计算后a为2,
再计算中间的表达式a++,结果为2,计算后a为3,
再计算最左的表达式a++,结果为3,计算后a为4,

所以输出的是:321

#include <stdio.h>
main()
{
int a=1,A,B,C;
A=a++;
B=a++;
C=a++;
printf("%d%d%d\n",A,B,C);
}
你那个只有111,根本不会出现321,
是以上那个!

如果你懂汇编的话,把这个程序反汇编一下,你就会很明了了……

运算为从右往左计算,输出的形式为从左往右输出!