当前位置: 代码迷 >> C语言 >> 新人,刚开始学C语言..有问题,不要笑话啊.
  详细解决方案

新人,刚开始学C语言..有问题,不要笑话啊.

热度:414   发布时间:2007-07-23 18:49:04.0
提示: 作者被禁止或删除 内容自动屏蔽

坚持到底
2007-07-23 10:49:04
ljfljf2006

等 级:新手上路
帖 子:58
专家分:0
注 册:2005-9-11
  得分:0 
以下是引用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的分析结果也是对的!
----------------解决方案--------------------------------------------------------
  相关解决方案