VC中的a++以及参数计算顺序问题

来源:百度知道 编辑:UC知道 时间:2024/06/11 13:46:14
main()
{
int a=5;
printf("%d %d\n",a,a++);
}
运行结果:5 5
为什么 不是参数从右向左计算么 那么结果应该是6 5才对
书里说的参数从右向左计算啊
而且他也举了个例子和这个一样
答案是65 不过他那是tc
我就想试一下vc 结果答案就不一样了

to lipenglove520 :
如果说是输出之后才累加
main()
{
int a=5;
printf("%d %d\n",++a,a);
}
运行结果:6 5
又怎么解释呢?

这里的a a++都一样的,只是printf输出之后才累加的
你在
main()
{
int a=5;
printf("%d %d\n",a,a++);
printf("%d\n",a);
}
就是5 5
6
了。

你说的在TC里面是这样可能和编译器有关系。++ --的问题常常会因为编译器而不同这是肯定的。
cout和printf一样,输出参数是从右往左顺序压栈,输出时从栈顶取数据输出

我觉得应该是65.因为printf("%d %d\n",a,a++);这个函数是从右向左输出的..所以当a=5时,a++是5.然后a+1为6..

肯定是5,5啊!输出a和a++后,a的值就变成6了。