qcliu 发表于 2023-9-12 08:32

日常Debug之:if(false)能运行?智子攻陷了我的MCU!!!

环境:AT32F403AVGT7、IAR8.30、J-LINK
现象:定时器中断里遇到 -1 <= 0 返回false的情况。如图:






出现了if(-1 > 0){}为True的情况。
是不是被智子监控了呢?

经过分析:发现
文件1.c:

int32_t s32G_HiTick=0;

文件2.c:

extern uint32_t s32G_HiTick;

文件2里的s32G_HiTick还是被认为是unsigned 类型,所以-1在unsigned的情况下是不可能为复数的。
破案了,世界和平依旧。
————————————————
版权声明:本文为CSDN博主「casdfxx」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/c_1969/article/details/132479456

tpgf 发表于 2023-10-9 16:39

这种问题一般非常不容易进行排查啊

drer 发表于 2023-10-9 16:53

我们可以小心的让数据不超过范围吗

wiba 发表于 2023-10-9 17:21

其实本质上就是数据发生了溢出现象是吗

kxsi 发表于 2023-10-10 16:23

这种数据类型不匹配的问题 我们一般从哪里开始进行排查呢

coshi 发表于 2023-10-10 16:45

为什么无符号的数据就不存在这个bug了呢

qcliu 发表于 2023-10-10 17:32

coshi 发表于 2023-10-10 16:45
为什么无符号的数据就不存在这个bug了呢

当然了因为无符号不存在负数啊
页: [1]
查看完整版本: 日常Debug之:if(false)能运行?智子攻陷了我的MCU!!!