永发信息网

keil写STM32程序出现literal treated as "long long"的错误,百度不到是什么意思

答案:3  悬赏:80  手机版
解决时间 2021-03-23 02:55
  • 提问者网友:泪痣哥哥
  • 2021-03-22 19:02
keil写STM32程序出现literal treated as "long long"的错误,百度不到是什么意思
最佳答案
  • 五星知识达人网友:西岸风
  • 2021-03-22 19:48
这么定义long long y;不要定义为double。追问试过了,还是错追答原因:The ANSI standard explicitly requests that plain decimal numbers are considered
as signed long constants. 系统把常数当做signed long处理,这样4294967295就越界了。

所以,这样试一下 y = 4294967295U/ SYSTEMCLK;
还有,你的SYSTEMCLK是怎么定义的?追问SYSTEMCLK是宏定义
#define SYSTEMCLK 180加个U真的就没有警告了怎么加了个U就好了追答加个U代表是unsigned long,这样就不会越界了,unsigned long的最大值是2^32-1 = 4294967295。signed long 的最大值是 2^31-1。
全部回答
  • 1楼网友:你哪知我潦倒为你
  • 2021-03-22 21:27
long long 语法错误追问嗯?算什么语法错误追答你试试float运算呢?
  • 2楼网友:举杯邀酒敬孤独
  • 2021-03-22 21:00
字面意思是说会把该行的表达式按照long long型进行处理。
你最好把出错提示的行贴出来。追问

光标这行

追答y是个double型,而等号右边的4294967295若按照默认来说是会升阶处理的,所以会有这么个提示。
正常来说应当写成
y = (double)4294967295 / SYSTEMCLK;

另外你的计算过程毫无章法可言……追问改了还是出现这个警告
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯