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

2019-07-14 15:08发布

在调试板子时,遇到的现象。
if语句判断,并不成立。ret的值是0,但是if(1==ret)语句却可以执行。这是什么情况。大家有碰到过的吗。指教一下
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
16条回答
asd010
1楼-- · 2019-07-15 00:50
应该是编译器优化的原因。看看汇编代码就知道了。估计是那条代码在其他地方还有。
ctwewer
2楼-- · 2019-07-15 01:55
1、降低优化等级;
2、ret定义为uint32_t;
vyewrewr
3楼-- · 2019-07-15 04:51
这个遇到过,应该是调试器的问题,有时候调试器显示的变量值更新不及时,你这个ret初始化为0的缘故,可以试试吧这个ret定义的时候初始化为一个其他值,看看是否这里显示的是初始化的值。
TOPCB
4楼-- · 2019-07-15 06:22
编译器优化等级调到0
cknz
5楼-- · 2019-07-15 08:45
 精彩回答 2  元偷偷看……
60user160
6楼-- · 2019-07-15 10:17
volatile 吧

一周热门 更多>