以下是引用h13771900904在2007-7-22 12:45:16的发言:
#include <stdio.h>
void main ()
{
int i=3;
printf("%d,%d",i,i++)
getch();
}
这个是在WINTC里编译的,结果是3,3
我弄不明白,我认为是4,3.不是I用过后要自加1么?
我的编译结果就是 4,3
----------------解决方案--------------------------------------------------------
回复:(xu66zhen)难道编辑器的不同会造成输出结果的...
我的运算结果也是4 3
你重下个Turbo,再装个新的,试试!
----------------解决方案--------------------------------------------------------
回复:(h13771900904)新人,刚开始学C语言..有问题,不...
有编译器依赖,这样的问题不用研究。VC上是3,3
GCC上是4,3
----------------解决方案--------------------------------------------------------
后置++是先赋值后运算 所以是3,3
----------------解决方案--------------------------------------------------------
编译器的问题,有的是自右先左,有的是自左向右,LZ你说的答案也没有错。
----------------解决方案--------------------------------------------------------
这样的是未明确定义的运算!!如if(a[index++]<a[index])这样的表达式,编译器可能先算前面的,也可能先算后面的,结果根据编译器的不同而不同!!
还有例如:函数f(int n)和g(int n);
当我们调用f(i++)*g(i)时候,这也是未定义的表达式,因为编译器可能先算前面的,也可能先算后面的
----------------解决方案--------------------------------------------------------
编译器不一样结合性不一样,turbo总是很诡异!
----------------解决方案--------------------------------------------------------
是要自增1,不过I要在打印之后变成4
----------------解决方案--------------------------------------------------------
编译器!LZ的分析结果也是对的!
----------------解决方案--------------------------------------------------------