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

[复制链接]
 楼主| 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 | 显示全部楼层
习惯在前面加括号强转
FranklinUNK 发表于 2024-2-29 19:27 | 显示全部楼层
警告不用管就行了
yangjiaxu 发表于 2024-2-29 21:49 | 显示全部楼层
这个bug还没遇到过,但是感觉应该就是语法的问题吧
classroom 发表于 2024-8-15 17:26 | 显示全部楼层
在Keil MDK环境中编写STM32程序时,如果遇到“literal treated as 'long long'”的警告,这通常是因为你使用了超出标准整型(如int或unsigned int)范围的大整数字面量,而编译器默认将这些字面量解释为long long类型。
flycamelaaa 发表于 2024-8-15 17:26 | 显示全部楼层
避免使用过大的字面量
laocuo1142 发表于 2024-8-15 19:26 | 显示全部楼层
使用合适的字面量后缀
狄克爱老虎油 发表于 2024-8-17 23:14 来自手机 | 显示全部楼层
强制转换一下应该就行吧
grfqq325 发表于 2024-8-28 12:05 | 显示全部楼层
在 C 语言中,常量的默认类型是 int,但如果数值超出 int 类型的表示范围,它将被视为一个更大的类型,如 unsigned int 或 long。
Clyde011 发表于 2025-3-18 08:23 | 显示全部楼层
这个问题算是 C 语言的一个小坑,特别是对初学者来说,记住给大数加 u 可以避免很多潜在问题。
公羊子丹 发表于 2025-3-18 08:24 | 显示全部楼层
Keil 的编译器可能默认把 0x80000000 识别为 signed int,所以直接赋值给 unsigned int 时不会报错,但用十进制就不一样了。
周半梅 发表于 2025-3-18 08:25 | 显示全部楼层
这个问题主要是 2147483648 超出了 int 的范围,默认会被当作 long long,加个 u 确保它是 unsigned int 就行了。
帛灿灿 发表于 2025-3-18 08:27 | 显示全部楼层
你可以试试 #define VALUE (2147483648u),然后用这个 VALUE 赋值给 unsigned int,看看编译器还报不报警告。
童雨竹 发表于 2025-3-18 08:28 | 显示全部楼层
这个问题其实跟编译器的类型推导规则有关,Keil 可能对十六进制和十进制的处理逻辑不一样。
万图 发表于 2025-3-18 08:29 | 显示全部楼层
你可以用 unsigned int value4 = (unsigned int)2147483648;,这样也能避免警告,不过加 u 更直观。
Bblythe 发表于 2025-3-18 08:31 | 显示全部楼层
你用的是哪种 C 语言标准?如果是 C99 或者更新的版本,这种情况一般会有更严格的类型检查。
Wordsworth 发表于 2025-3-18 08:33 | 显示全部楼层
0x80000000 在 int 里是负数,编译器可能隐式转换成 unsigned int,但 2147483648 是个大于 int 范围的数,所以要显式告诉编译器。
Pulitzer 发表于 2025-3-18 08:35 | 显示全部楼层
0x80000000 这种情况在不同编译器里可能会有不同的处理方式,你试过在 GCC 或 IAR 里编译看看吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

36

主题

3343

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部