打印
[STM32F1]

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

[复制链接]
999|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sanfuzi|  楼主 | 2024-2-29 12:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
unsigned int value2=0x80000000;
value2编译时不产生警告,而value4就产生警告
解决方法:
上面这个语句,需要先将int类型,转换成unsigned int类型,再赋值给value4;
unsigned int value2=0x80000000;
如果你想要明白告诉编译器,2147483648就是unsigned 类型,你可以这么做.
unsigned int value4=2147483648u;

使用特权

评论回复
沙发
digit0| | 2024-2-29 13:09 | 只看该作者
意味着编译器检测到了一个整数字面常量的值超出了int类型的表示范围,并且没有显式指定类型

使用特权

评论回复
板凳
理想阳| | 2024-2-29 13:09 | 只看该作者
解决这个问题的方法是在赋值时明确指定字面常量的类型为unsigned int,通过添加后缀U来进行类型转换

使用特权

评论回复
地板
ClarkLLOTP| | 2024-2-29 17:34 | 只看该作者
习惯在前面加括号强转

使用特权

评论回复
5
FranklinUNK| | 2024-2-29 19:27 | 只看该作者
警告不用管就行了

使用特权

评论回复
6
yangjiaxu| | 2024-2-29 21:49 | 只看该作者
这个bug还没遇到过,但是感觉应该就是语法的问题吧

使用特权

评论回复
7
classroom| | 2024-8-15 17:26 | 只看该作者
在Keil MDK环境中编写STM32程序时,如果遇到“literal treated as 'long long'”的警告,这通常是因为你使用了超出标准整型(如int或unsigned int)范围的大整数字面量,而编译器默认将这些字面量解释为long long类型。

使用特权

评论回复
8
flycamelaaa| | 2024-8-15 17:26 | 只看该作者
避免使用过大的字面量

使用特权

评论回复
9
laocuo1142| | 2024-8-15 19:26 | 只看该作者
使用合适的字面量后缀

使用特权

评论回复
10
狄克爱老虎油| | 2024-8-17 23:14 | 只看该作者
强制转换一下应该就行吧

使用特权

评论回复
11
grfqq325| | 2024-8-28 12:05 | 只看该作者
在 C 语言中,常量的默认类型是 int,但如果数值超出 int 类型的表示范围,它将被视为一个更大的类型,如 unsigned int 或 long。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

23

主题

3094

帖子

1

粉丝