求高人解答:同一段程序在vc++ 6.0与turbo c运行结果不同的问题

作者&投稿:聂疫 (若有异议请与网页底部的电邮联系)
为什么VC6.0 与Turboc2.0运行结果不一样~

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

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

我只能告诉你几点
1.能发现这些差别,是值得肯定的
2.试图研究这些差别,是没有必要的,因为编译器也是别人写的程序,那么程序必定有他的设计思想,那就要允许不同的编译器设计思想不同,所以同一个问题出现不同的结果
3.尽量少用printf,初级阶段调试可以用,后面你会发现,这个函数没啥好处

造成这种结果 是 C语言在 ++j 定义上 的不严密性 造成的。

q=(++j)+(++j)+(++j); 这同编译器编译时 的优化处理方式有关。

VC++ 编译 时, 若编译选项 选用 优化 /O1 或 优化 /O2 ,结果 为 24
/O1 minimize space 省空间优化
/O2 maximize speed 使运算速度最快优化
默认结果为不优化,得 22。

你好!

这个问题我之前也纠结过,你可以参考下下面的介绍。
http://www.chineselinuxuniversity.net/articles/19490.shtml
我之前的那个题目是
int i = 3;
printf("%d\n", (++i) + (++i) + (++i));
printf("%d\n", i);
TC下面的答案是:15和6
VC下面的答案是:16和6
我也不太清楚原因。

另外:二级C正常情况下是用VC++6.0,软考下午的编程考试是笔试,具体可以查看网上的介绍,我记得是五道必做题(C语言),还有一道选做题(选用C++的STL或者JAVA)。

希望我的回答能对你有所帮助!
如果满意记得采纳为最佳答案哦!~
如果还有问题,可以BaiduHi我,O(∩_∩)O~!

像这样连续自增的带歧义的函数,两种编译器采取的计算方式不同,一个是先自增一个是现相加,而造成结果不同。

TC是以一条语令为单位编译,VC以一次计算为单位,VC中“++”不算一次计算。

这个问题对你过级没什么太大的帮助,你可以反汇编一下看看。C标准中没有对这个做明确要求,所以不同编译器的实现是不同的。你弄明白这两个过编译器以后还可能遇到GCC之类的还是出问题,别人也看不懂你写的程序。
别弄这个了,你走弯路了。

语言没有对此作强制规定,如果编译器不同结果就很可能不同。


FANUC车床M30以及回零的问题 求高人解答
M30就是程序结束后,反回到程序第一段。很正常,如果不要它返回第一行,就用M02。不用机械回零。直接对刀,照样一个样。

电脑蓝屏自动重启,拜求高人解答,不胜感激,急急急!!!
思路是检索错误代码:BCCode:116 .。。。似乎是英伟达的显示卡驱动程序工作异常导致系统蓝屏崩溃。建议你更换一个其他版本的显示卡驱动程序,该版本不一定是要英伟达提供的最新版本,可以是一个官方发布一段时间了的稳定版本。根据我个人的经验:你是升级了部分驱动,尤其是显卡驱动导致了蓝屏。解决方案:你...

电信hg100n猫 再到 tplink远程不能监控啊求高人解答,急急急!!!_百度...
1、telnet 默认的是23端口,不是80或8000。2、开了80端口,用web方式访问就是。3、……是不是路由到路由不行啊 因为都不在同一个网段……在做远程监控之前,至少要保证网络可达吧?!4、所有的路由猫都支持Bridge的桥接方式,只需简单的设置即可。

关于从德阳骑自行车到汶川旅游的路线问题。求高人解答!!!
现在主要是走川西环线省道106,从德阳至天元---金轮---师古镇---九里埂---红岩---桂花---彭县至都江堰---都汶线,开车的话要3个多4个小时,骑车的话就不知道你的速度了,桂花一段路有点坡,路面超好,至都江堰全校新柏油路。

几道数学题,望高人快速解答,谢谢
1.今年的世界杯足球赛在南非举行,共有32支足球队参加比赛。第一阶段是小组赛,32支球队平均分成8个小组,同一个小组中的4支球队,每两队之间都要进行一场比赛。一共要进行( 48 )场小组赛。2.一个长6分米、宽5分米、高4分米的长方体盒子,最多能装( 12 )个棱长为2分米的小正方...

一道初二数学解答题,望各位高人指导,谢谢!
联立 y=4x 和 y=4\/x 可得 A(1,4),联立 y=1\/2*x 和 y=4\/x 可得 B(2√2,√2),由于 S△AOC=S△BOC ,且△ AOC 与△ BOC 有公共边 OC ,因此 A、B 到直线 OC 距离相等,设 C(a,4\/a),则直线 OC 的方程为 y=4\/a^2*x ,根据点到直线的距离公式可得 |4-4\/...

高人指点电脑蓝屏问题!代码0x00000050(0x8A3AF818,
高人指点电脑蓝屏问题!代码0x00000050(0x8A3AF818, 0X00000000)电脑原本就重装不了,直到知道金山有系统安装就试着安装,电脑第二次自动重起后出现蓝屏后手动重起边黑屏!后来就用系统盘安装导致现在的蓝屏 F8和系统选项都没有了。现... 0X00000000)电脑原本就重装不了,直到知道金山有系统安装就试着安装,电脑第二...

高二双曲线数学轨迹..求高人解答!
|AB|=2,AM=4,L⊥平分BM,交MA于P。以AB为X轴,AB的中点O为原点,过点O的垂线为Y轴,并设A(-1,0),B(1,0),P(x,y),则 PM=PB AM=AP+PM=AP+PB AM=4,AP=√[(x+1)^2+y^2],PB=√[(x-1)^2+y^2]4=√[(x+1)^2+y^2]+√[(x-1)^2+y^2]化简上方程,得 3x^...

...本人菜鸟都不是。拜请请专业高人解答。完成后再加50分
思路是这样子的:首先末尾要产生0,每产生一个0,都意味着存在一个10,因为他们是10进制的,那么10可以分解为5*2,由于每两个相邻的整数当中,就有一个因子2存在,也就是说,因子2的个数要比因子5的个数多的多……因此,本程序中,主要就是求因子5的个数。求解的思路很简单,首先,我们取一个...

电脑速度慢请高人解答详细可加分
电脑运行速度变慢的10大原因 有很多人,都说自已的计算机如何慢、如何慢,其实令自已的计算机慢的原因,如果将所有原因算出来,简直多的是!不过我会在这里简介一下令计算机慢的主因!1、在开机时加载太多程序 2、桌面上开启桌布 3、没有定期清理硬磁盘和重组硬磁盘 以下的,我就会很详细地说明一下如何...

洪湖市19534948582: 为什么同样的程序、在vc++执行不了、 -
重哑亮菌: VC++中得main函数必须有类型 所以你要定义成void main

洪湖市19534948582: 在vc++6.0中为什么同一个程序在c/c++文件不能运行而在c++文件中能运行呢? -
重哑亮菌: 你所说的"C/C++文件"很可能是"C/C++头文件",当然你的程序在这里是运行不了的.我们一般是在C++源文件运行程序的.

洪湖市19534948582: 一样一段程序,为什么在vc++6.0下就可以运行,而在vs2010下就会报错 -
重哑亮菌: 编译环境不一样,是有可能出问题.要看具体错误原因

洪湖市19534948582: 如何用VC++执行一段程序 -
重哑亮菌: 新建工程->WIN32 CONSOLE APPLICATION 取个名字->选择空文档 再点新建FILE(文件)->C++ SOURCE FILE 取个名字 然后把代码复制进去,按F5编译连接执行,ALT+F5看结果,F9插入断点,F10 单步跟踪

洪湖市19534948582: 为什么同一个程序用vc++6.0运行出现不同的结果
重哑亮菌: 这和硬件的运算设置有关,没有什么奇怪的.遇到这类问题你需要先了解一下编译环境和硬件设置.

洪湖市19534948582: 相同的程序在codeblock中可以正常运行,但在VC++6.0中运行时就会出错, -
重哑亮菌: 工程的属性 也许存在不一致 代码一样 不代表 工程属性一致,万一工程里 多了一个宏,代码编译后 就是天差地别

洪湖市19534948582: Vc++3.0和Vc++6.0执行相同程序为什么会出现不同结果? -
重哑亮菌: vc++3.0是版本太低了,vc++6.0是微软的发布的新版本,而且vc++6.0又增加了很多功能,如果双长整形,long long 还有布尔型,bool,vc++支持c99最新标准!所以,你执行的相同的代码可能结果不同!

洪湖市19534948582: VC++写C程序时,同一个工程怎么建多个文件?我建了多个但是不能运行?怎么破? -
重哑亮菌: 右键单击项目——添加——新建项,新建,就可以了. 使用其他文件时 要包含相应的头文件,才能实现其他文件中的函数的调用

洪湖市19534948582: 同样的代码在VC++6.0和Cfree中运行结果不同 -
重哑亮菌: 这是float的精度造成的.float只能保障小数点后6位精度,VC中,默认用double表示浮点数,因此你定义的PI是double,计算后转换为float,因此精度更高.cfree中,应该是使用float参与的运算,那么PI只能保障6位有效精度,也就是3.141592,后面就会有误差了.

洪湖市19534948582: 为何同一段c++代码在VC++6.0上面能运行,而在VC8.0上面就不能运行了? -
重哑亮菌: VC++6.0跟标准C++差别太大了,vc++8.0向标准C++更靠近了,不过差别应该不大,你按照提示信息稍微修改下应该就好了 你给那个程序我编译都没有通过...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网