在Keil MDKARM中
unsigned int value2=0x80000000;
unsigned int value4=2147483648;
value2編譯時不產生警告,而value4就產生警告
main.c(17): warning: #1134-D: literal treated as "long long"
解決方法:
關鍵是2147483648是一個字面常量,類型是int型,而不是unsigned int.
上面這個語句,需要先將int類型,轉換成unsigned int類型,再賦值給value4;
在轉換過程中,因為這個數值超過32位int類型的表示范圍,所以會出現你所見到的那個警告.
unsigned int value2=0x80000000;
0x80000000;字面類型是unsigned的,所以在32位的表示范圍之內.
如果你想要明白告訴編譯器,2147483648就是unsigned 類型,你可以這么做.
unsigned int value4=2147483648u;
轉載自:http://qq357476432.blog.163.com/blog/static/37012267201123011582320/