vs2015編譯錯誤解決:error C4146: 一元負運算符應用於無符號類型,結果仍爲無符號類型

使用vs2015編譯代碼時報錯:

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

 

原因: 
由於編譯器SDL安全檢查認爲這一操作(通常是爲無符號整形取負的操作)無效而產生的。

這裏我們假設定義一個數值爲int INT,在32位機上面取值範圍是-2147483648~+2147483647, 
INT變量在後面會取負,比如Temp = -INT, 
編譯器認爲INT有可能大於2147483647,那麼會將INT優化爲unsigned int類型, 
SDL就可能認爲我們的INT有可能取負了之後還是一樣的,畢竟是unsigned 類型,因此提示錯誤。

 

解決方法: 
右鍵項目名稱->屬性->C/C++->常規:SDL檢查,選擇否。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章