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

如题所述

首先,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是比较严格遵守标准的。
温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

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