ddb_21ic 发表于 2012-2-22 22:02

C语言咋回事了?搞不懂了,能猜出运行结果吗?

能猜出运行结果吗?

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

在不同的编译器中会有不同的结果
页: [1]
查看完整版本: C语言咋回事了?搞不懂了,能猜出运行结果吗?