keil寫STM32程序出現literal treated as "long long"


在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/


免責聲明!

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



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