当前位置: 代码迷 >> C语言 >> 一个小程序,为什么TC跟VC的结果不同
  详细解决方案

一个小程序,为什么TC跟VC的结果不同

热度:51   发布时间:2008-01-17 23:09:12.0
一个小程序,为什么TC跟VC的结果不同
群里一位朋友出了个简单的小程序,但是为什么我在TC跟VC运行的结果不同呢?
#include "stdio.h"
void main()
{
int i=3;
i++;
printf("%d,%d",i,i++);   
}
在TC里的结果是5,4
在VC里的结果是4,4
甚至有朋友在C#里的结果也是4,4
但是个人觉得从理论上应该是5,4
但为什么其他两种编译器出的结果不同呢?
搜索更多相关的解决方案: 结果  理论  void  int  

----------------解决方案--------------------------------------------------------
我觉得是4 4
----------------解决方案--------------------------------------------------------
这个是编译器对++的解释顺序不同.个人觉得知道就行了,没必要太深究...个人观点,,,
----------------解决方案--------------------------------------------------------
可不可以让我入群。。。
我是个刚学C的 之前也没学过什么语言的
我想进步进步 呵呵
----------------解决方案--------------------------------------------------------
那按照老潭的书上介绍的,结果应该是5,4吧
----------------解决方案--------------------------------------------------------
群号50661035
不过你不要报太大希望,因为里面的人基本不怎么交流,我入了4天,里面才谈了2次话
----------------解决方案--------------------------------------------------------
这个问题很典型
VC默认的是DEBUG状态,为了迁就调试功能,对代码作了一些不是很ANSI的加工,造成结果不准确。
也就是说,如果把VC调整到Release状态,不要调试信息了,带有编译优化/O1或者/O2了的话,结果就正常了。
这样VC也是5,4了,呵呵
----------------解决方案--------------------------------------------------------
呵呵,虽然不是太懂,但是基本上已经了解了,多谢各位大哥的指教。
----------------解决方案--------------------------------------------------------
所有编译器都有这样那样的毛病,关键在于回避。
----------------解决方案--------------------------------------------------------
谁再自找这样的未定义的行为的麻烦,拖出去~~
----------------解决方案--------------------------------------------------------
  相关解决方案