keil写STM32程序出现literal treated as "long long"

时间:2023-03-09 16:29:52
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/