C语言 的 从右到左的问题

来源:百度知道 编辑:UC知道 时间:2024/06/07 01:26:32
#include "stdio.h"
main()
{
int x=3,m;
test(x,x++);

}
int test(int left,int right)
{
printf("left=%d,right=%d",left,right);
}
在TC中运行结果是 left=4,right=3,在VC中运行是 left=3,right=3

这里 传递 TC中从右到左,VC中从左到右 是不是针对printf函数的,我记得好象X++ 是不管在TC 还是VC中都是 从右到左的```还有这里 这个结果 详细的是怎么 实现的???
晕 可不可以说得浅显一点啊 ``具体杂个传递的```X什么时候加的一``` 什么时候传的 还有``入栈。。。 我想问TC 里面是怎么成的`~~~`具体点 `~~ a??~~ 晕 怎么没有人回答我`~?~?

应该是left=3,right=3
因为是先赋值后自+的,
在TC中它可能把它当做指针了,
那样的话是输出的地址,
所以是
left=4,right=3

这不是X++的问题。函数在返回值类型的后面加上,__cdecl或者__pascal,前者说明参数从右到左压栈,也就是从左到右运算,后者是正好相反。

TC的就不清楚了,我不记得学TC的时候有这个现象。应该是编译器的问题吧。
那么说下VC,执行test的时候,X++还没开始累加,也就是说带进来的right依然是3,所以输出之后还是3.当函数结束返回的时候,X++才开始累加变成4