記一次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強轉之后值不一樣,所以得到不同的結果了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM