錯誤C4146的解決方法


  error C4146: 一元負運算符應用於無符號類型,結果仍為無符號類型;

  那么什么情況下會遇見這種錯誤呢,例如下代碼:

    錯誤代碼1:int number = -2147483648; //error C4146: 一元負運算符應用於無符號類型,結果仍為無符號類型;

    錯誤代碼2:if ( num >= -2147483648 && num<= 2147483647  );//error C4146: 一元負運算符應用於無符號類型,結果仍為無符號類型;

  雖然我們都知道int的最小值是-2147483648,但在編譯器中使用,依然會報錯。 原理是:當VS2013在碰見int number = -2147483648;時候,首先判斷得到2147483648>int的最大值。就會使用 unsigned int,在根據前面有負號,會將值取對反。

  解決方法:

    進行宏定義 #define int_num (-2147483647-1)定義

    改正代碼1:int number = int_num;

    改正代碼2:if ( num >= int_num && num <= 2147483647 );


免責聲明!

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



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