读书人

vs2003太差劲了int num = 100 * 0.0

发布时间: 2012-03-31 13:13:26 作者: rapoo

vs2003太差劲了,int num = 100 * 0.02f 居然等于1,而VS2008就正常.
如题..........

[解决办法]

探讨赤裸裸的缺陷。...

还有那个万恶的 for(int i=0 ..) i在作用域之外还能被引用的问题..

[解决办法]
楼主浮点问题的答案在这里http://msdn.microsoft.com/en-us/library/e7s85ffb(v=vs.90).aspx

With /fp:precise on x86 processors, the compiler will perform rounding on variables of type float to the proper precision for assignments and casts and when passing parameters to a function.

意思是/fp:precise使得编译器搞舍入(rounding),而不是所谓严格的(strict)计算

vs2008下默认是/fp:precise,如果设置成/fp:strict,结果就与vs2003一样了
[解决办法]
2003有对6.0的程序进行一些兼容
而6.0 C++标准还没出生呢
所以
for(int i;;)
...
这种东西出来到外面还能用是正常的
还有vector的实现与2005之后的也不一样
2003 --vec.begin(),就会变成 vec.end()
迭代器删除之后 一个--iter还能接得回去不会失效
vec._MyFirst可以直接拿出来用
还可以调试HLSL

这些到了2005就全部修改了

不是差劲 只是一些东西调整了而已

都啥年代了 早该换了...

读书人网 >C++

热点推荐