找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

C语言 为什么判断同一个数,switch不能判对,而if能呢

查看数: 1870 | 评论数: 8 | 收藏 1
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2023-11-3 15:27

正文摘要:

问题如图,IR_Val的定义是uint32_t,case的程序是stm8能用的,我现在要移到stm32上,keil给我判错,请问有知道这是什么问题吗?先谢谢大家

回复

ID:382454 发表于 2023-11-4 16:37
应该可以的,可能你这个数有点问题,,char 还是int还是浮点型。也可以把这几句单独在调试一下,就一目了然了。
ID:883242 发表于 2023-11-4 16:13
billaj 发表于 2023-11-4 15:53
难道是CASE只能是16位???

你贴的代码确实只比较了低16位,也可能高16位都一样,前面另外判断了,代码不全不能确定。
ID:388929 发表于 2023-11-4 15:53
难道是CASE只能是16位???
ID:883242 发表于 2023-11-3 19:00
wulin 发表于 2023-11-3 18:54
switch()括号中只可以允许int、char、bool、enum类型,别的类型不可以。

但是你说的跟楼主描述的完全相反,uint32_t在STM8编译器里面是long,不符合你的要求,但是人家好用。在MDK里面是unsigned int类型,楼主的数据最高位都是0,也就是说都是正数,与int类型完全等效。
ID:213173 发表于 2023-11-3 18:54
switch()括号中只可以允许int、char、bool、enum类型,别的类型不可以。
ID:883242 发表于 2023-11-3 18:50
在MDK中,右键项目,弹出options for target,然后在c/c++标签中的Misc Controls里面加上“--asm”就可以输出汇编文件了,在obj目录里面的s文件就是c语言对应的汇编。
ID:883242 发表于 2023-11-3 18:22
可以看一下生成的汇编代码。

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表