记一次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强转之后值不一样,所以得到不同的结果了。

 

posted @ 2020-06-13 22:18  软件开发-汪七北  阅读(1744)  评论(0编辑  收藏  举报