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

2019-07-14 15:08发布

在调试板子时,遇到的现象。
if语句判断,并不成立。ret的值是0,但是if(1==ret)语句却可以执行。这是什么情况。大家有碰到过的吗。指教一下
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
16条回答
sdfjaslkdjf1
1楼-- · 2019-07-15 12:08
file:///C:UsersCJAppDataRoamingTencentUsers2839084093TIMWinTempRichOleOAW@659P72I07P04D}VJ73X.png
这里选为0.就不会进去了
WU_0ba
2楼-- · 2019-07-15 13:31
应该是编译器优化的原因。看看汇编代码就知道了。估计是那条代码在其他地方还有。
60user36
3楼-- · 2019-07-15 15:41
首先看他初始化没有,再看看这个值怎么来的?受到硬件影响大吗,要不要加上volatile?
zhouxk
4楼-- · 2019-07-15 18:51
 精彩回答 2  元偷偷看……
cnm7
5楼-- · 2019-07-15 20:58
先检查初始化是否有问题,再检查IF前后是否有类似语句,因我不符合要求不会运行,看你的配置参数是不是设置的不对
xieweibin
6楼-- · 2019-07-16 01:26
应该是编译器优化的问题导致的。

用 Disassembly Window 查看一下汇编代码,看看优化成什么了。
再用 0 优化级别,重新编译一次,再看看汇编,就知道什么问题了。

一周热门 更多>