为什么VC6编译出的东西跟VS2012运行结果完全不同

 我来答
寒冷魔王
推荐于2016-04-25 · TA获得超过265个赞
知道答主
回答量:56
采纳率:0%
帮助的人:47.1万
展开全部
首先,VC6是90年代的,VS2012是10年代的,这么多年了,VC++编译器的实现肯定已经改变了。出现运行结果不同的情况是很正常的,C和C++语言标准有许多未定义的行为,编译器实现改变,对这些未定义行为的预定也会存在改变。

其次,VC6对C++的标准支持度不是很高,而且C++98和C++11也有很大区别。举个例子,for (int i = 0;;);这句话,在VC6里面的i就存在“污染”,并非for内局部变量,而根据C++标准,这里的i是不能作用到for外面的。VS2012对C++标准的支持度提高许多,那么这种不规范的行为都会被矫正。那么VC6与VS2012的结果大相庭径也是可以理解的。

建议题主使用新版本的编译器来比较。比如使用gcc 4.8以上而不是VC++6.0,来与VS2012比较。这样才能验证代码的正确性。

顺便一提,VS2012也有许多不标准的地方,一般认为gcc是比较严格遵守标准的。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式