[嵌入式linux] C语言咋回事了?搞不懂了,能猜出运行结果吗?

[复制链接]
2545|9
 楼主| ddb_21ic 发表于 2012-2-22 22:02 | 显示全部楼层 |阅读模式
能猜出运行结果吗?

void xprint(int a, int b, int c){
printf("%d  %d  %d \n", a, b, c);
}

void main()
{
int x;

x = 2;
xprint(x++, ++x, x+1);

x = 2;
xprint(x++, x++, x++ );

x = 2;
xprint(++x, ++x, ++x);

printf("\n *** Press any key to continue *** \n");
getch();
}
 楼主| ddb_21ic 发表于 2012-2-22 22:06 | 显示全部楼层
在我印象中,结果应该是:
2 4 5
2 3 4
3 4 5
在Visual Studio 2008中运行后,居然是:
3 4 5
4 3 2
5 5 5
怎么回事呢?
aozima 发表于 2012-2-22 22:41 | 显示全部楼层
谁在产品中写这种代码直接T掉。
caoqing1314 发表于 2012-2-25 16:59 | 显示全部楼层
不同的编译器执行流程是不同,从左到右,从右到左,从两边到中间都是不同,不过这种问题没必要纠结
 楼主| ddb_21ic 发表于 2012-2-27 14:52 | 显示全部楼层
看了下反汇编,总算明白了
我还以为C语言经过那么多次ISO,应该会有确定的答案了
 楼主| ddb_21ic 发表于 2012-2-27 14:53 | 显示全部楼层
反汇编中,是把每个表达式计算完之后才push的
inzaghian 发表于 2012-3-1 14:35 | 显示全部楼层
何必呢
sz_longyue 发表于 2012-3-2 13:12 | 显示全部楼层
没事找抽型
mindshare 发表于 2012-6-12 17:50 | 显示全部楼层
在不同的编译器中会有不同的结果
您需要登录后才可以回帖 登录 | 注册

本版积分规则

107

主题

1123

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部