Turboc 和VC6.0 编译结果不一样

程序1:
#include "stdio.h"
void main()
{
int i;
i=0;
printf("%d\n",++i);
printf("%d\n",i++);
printf("%d\n",i);
}

程序2:
#include "stdio.h"
void main()
{
int i;
i=0;
printf("%d,%d\n",++i,i++);
printf("%d\n",i);
}

这两个程序分别用Turboc 和VC6.0 编译
程序1的结果是一样的
程序2的结果不一样
这是为什么

非常抱歉我不能给你完美的解答。如果非要问,这个现象只是由编译器决定的。不同的编译器,可能出来不同的结果。
依目前来看,差别应该主要出现在 printf("%d,%d\n",++i,i++);
到底是先算++i 还是先算i++,或者是到底是得到自加的值以后,再进行计算输出。

我只能告诉你几点
1.能发现这些差别,是值得肯定的
2.试图研究这些差别,是没有必要的,因为编译器也是别人写的程序,那么程序必定有他的设计思想,那就要允许不同的编译器设计思想不同,所以同一个问题出现不同的结果
3.尽量少用printf,初级阶段调试可以用,后面你会发现,这个函数没啥好处
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-04-19
程序编译顺序不一样,TC中是标准顺序,VC中顺序不标准
VC中同级别的数据处理是从右向左处理的,而标准是从左向又的
比如说a=b+c+d+e;在VC中就是先算d+e,然后c+(d+e),然后再b+(c+(d+e))
标准应该从左向右依次计算本回答被提问者采纳
第2个回答  2012-04-19
是的,不同的编译器在处理和实现 i++,++i多个连在一起的时候都是不一样的。
我们只要弄懂++i与i++的区别,以及常见的运算符号的优先级就可以了

不要太去抠这些东西,否则很难受的。

例如:负数与负数的求余,负数有小数的和负数有小数的求余。C,VB,JAVA,C#,Javascript,Go等多种语言都是不大同一的。
第3个回答  2012-04-19
是因为两者的调用约定不一样。C语言是cdecall,VC是stacall,两者的参数压栈方式不一样

求高人解答:同一段程序在vc++ 6.0与turbo c运行结果不同的问题
造成这种结果 是 C语言在 ++j 定义上 的不严密性 造成的。q=(++j)+(++j)+(++j); 这同编译器编译时 的优化处理方式有关。VC++ 编译 时, 若编译选项 选用 优化 \/O1 或 优化 \/O2 ,结果 为 24 \/O1 minimize space 省空间优化 \/O2 maximize speed 使运算速度最快优化 默认结果为...

为什么VC6.0 与Turboc2.0运行结果不一样
有的编译器是从左往右解释,那就是 655,从右往左解释就是 555。老谭的 C 语言书中已经说明了这个问题,并指出不要写出让人难以理解也不知道编译器会如何解释的代码来。对于你这种情况,还是换一种安全方式来写,比如多定义几个变量。

为什么turboc与vc++6.0运行结果不一样
虽然 c++与c 不同 但是 c++能识别c的语法 所以你说的情况不会出现 我用vc++6.0 帮你运算过了 没有出错的 建议你换个 vc++

为什么我的编的程序都对,但是VC6.0还是显示1个错误呢?
第二种可能:VC++6.0创建文件时错误,你换个位置如本来是F盘,你换成D盘 第三种可能:VC++6.0文件不全 你换个编译器看看,如turbo c2.0,C FREE 也有可能你掉了分号之类的 还有可能你分号写成中文分号了 ; ;这两个不一样

vc++6.0与turbo c的区别
如果考试要求用vc++6.0,我觉得还是使用vc++6.0比较好一些,两个的环境毕竟不同。在turbo c 中写的程序直接复制到VC++中能直接用。

本来turbo c但现在全国等级考用c++6.0下载完了不懂得用 好晕 急急急...
第三步:选择“Build”菜单 -》“Compile xxx.c”菜单项,即开始编译程序,中间会产生询问对话框,全部选择“OK”即可。。第四步:选择 “Build”菜单 -》“Build xxx.exe”菜单项,可以生成一个可执行文件。。第五步:选择“Build”菜单 -》“Execute xxx.exe”菜单项,可以开始执行程序。。就这些...

vc++6.0编译C和TURBOC编译C的区别在哪里
两个都可以用来运行C程序,所以两者任选其一就可以了 说说他们的区别 TurboC 软件本身很小方便安装和下载,只能运行C程序 VC++ 6.0 也可以运行C程序,软件比较大几百MB,VC不光可以运行C也可以运行C++程序,而且可以写可视化程序等等,功能十分强大 vc操作起来比turboc要方便的多,可以很方便的复制,...

turbo c++3.0与visual c++6.0使用一样吗?
但两者有一定的区别 C++的简称TC的程序在VC上写 一般编译可以通过 但无法运行 只因Tbc它只是一个文本编辑器,它可以支持低级系统,也可以在Windows下运行 而visual C++6.0它不能在低级系统下运行,只能在Windows平台上运行 1、Turbo C++ 3.0不仅能设计和编译C程序文件,而且修正了Turbo C 2.0中存在...

VC++6.0和Turbo C2.0是不是不一样啊?题目中要求把myf2.out、myf2.c...
.out是源文件.c编译出的过程文件,最终编译器将.out文件进一步链接成.exe文件。在VC中,由于VC集成编译器的情况,直接生成.exe文件,所以看不到.out文件。Turbo C2.0都过时十年多了吧,现在学校里还用这个,真是可悲。你还是用TurboC直接编译.c源文件吧。

tuber C和vc++6.0的区别
先精通一种,然后其他的就差不多会了,都是相通的。 如果写几个测试小程序,turbo c++ for windows 或者 DEV C++ 都比较不错。vc6.0 比较重量级,安装包上百M,虽然很老了,但是它依然有很多优势,比如编译的运行库不行也要依赖库。(暂时理解不了没关系)DEV C++ 都是绿色版的。解压即用。

相似回答