1. 程式人生 > >warning: this decimal constant is unsigned only in ISO C90問題的處理及理解

warning: this decimal constant is unsigned only in ISO C90問題的處理及理解

符號整型 類型 -- 十六進制 () 缺省 sign 整型 lan

參考:https://blog.csdn.net/duguduchong/article/details/7709482

   https://bbs.csdn.net/topics/391892978?page=1

問題描述:直接輸出一個大整數常量時會出現改警告。如下:

1 #include <iostream>
2 #include <stdlib.h>
3 
4 int main() {
5     printf("%d\n",2147483648);   //int型取值範圍 -2147483648~2147483647 
6     return 0;
7 }

  原因:數字超出默認類型int型的表示範圍。

     在gcc中缺省使用C90標準編譯,編譯器將按C90標準將你的-2147483648轉成無符號的十進制(但不影響你的結果)。

解決方法:1:不用管。

     2:在該數字後加u(大小寫無關),變為無符號整型(0~4294967295)。

     3:在gcc的編譯選項中加 --std=c99。

     4:使用十六進制的數字,如0xFFFFFFFF

warning: this decimal constant is unsigned only in ISO C90問題的處理及理解