记一次vc++6.0中程序正常,转 vs2019 c++后报错的问题
同样的代码,在vc++6.0编译器中,计算的正常,但是迁移到vs2019中之后,运行会直接崩掉(项目中实际的程序循环几万遍,每次循环会用到上次的值,所以排查这个问题花了很久),现在在这里记录下;这里之所以会出现问题,主要是非法数值强转,不同编译器计算的结果不一样:
1、VC++6.0中
这里N1是非法数值:-1.#IND000000000000,fllor函数向下取整后,依旧是非法数值,这里强转int之后,数值是0
2、VS2019 C++
这里N1是非法数值:-nan(ind),fllor函数向下取整后,依旧是非法数值,这里强转int之后,数值是-2147483648,也就是64位系统中int的最小值
看到这里就明白为什么相同代码用不同编译器得到的结果不一样了,因为我的代码中下次循环需用到上次的值,结果Int强转之后值不一样,所以得到不同的结果了。