你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

C语言调试时遇到的if语句不成立,但是可以执行

[复制链接]
wanyisq 提问时间:2018-4-2 14:05 /
在调试板子时,遇到的现象。
if语句判断,并不成立。ret的值是0,但是if(1==ret)语句却可以执行。这是什么情况。大家有碰到过的吗。指教一下
1522648834(1).png
收藏 评论16 发布时间:2018-4-2 14:05

举报

16个回答
bargagebaobei 回答时间:2018-4-2 14:16:05
我经常遇到这种情况 不知道为什么 但是奇怪的是最后并不影响我的判断结果

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

流水源 回答时间:2018-4-2 14:23:48
应该是编译器优化的原因。看看汇编代码就知道了。估计是那条代码在其他地方还有。

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

wenyangzeng 回答时间:2018-4-2 14:30:17
1、降低优化等级;
2、ret定义为uint32_t;

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

Angel_YY 回答时间:2018-4-2 15:31:06
这个遇到过,应该是调试器的问题,有时候调试器显示的变量值更新不及时,你这个ret初始化为0的缘故,可以试试吧这个ret定义的时候初始化为一个其他值,看看是否这里显示的是初始化的值。

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

回答时间:2018-4-2 15:36:48
编译器优化等级调到0

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

butterflyspring 回答时间:2018-4-2 16:05:04
没遇过,坐等答案..
QianFan 回答时间:2018-4-2 16:23:36
volatile 吧

评分

参与人数 1蝴蝶豆 +1 收起 理由
zero99 + 1

查看全部评分

不吃肉的羊 回答时间:2018-4-2 17:24:17
file:///C:\Users\CJ\AppData\Roaming\Tencent\Users\2839084093\TIM\WinTemp\RichOle\OAW@659P72I07P04D}VJ73X.png OAW@659P72I07P04D}VJ73X.png
这里选为0.就不会进去了

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

stm1024 回答时间:2018-4-2 18:00:52
首先看他初始化没有,再看看这个值怎么来的?受到硬件影响大吗,要不要加上volatile?

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

12下一页

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版