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();
} 在我印象中,结果应该是:
2 4 5
2 3 4
3 4 5
在Visual Studio 2008中运行后,居然是:
3 4 5
4 3 2
5 5 5
怎么回事呢? 谁在产品中写这种代码直接T掉。 不同的编译器执行流程是不同,从左到右,从右到左,从两边到中间都是不同,不过这种问题没必要纠结 看了下反汇编,总算明白了
我还以为C语言经过那么多次ISO,应该会有确定的答案了 反汇编中,是把每个表达式计算完之后才push的 何必呢 没事找抽型 在不同的编译器中会有不同的结果
页:
[1]