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

2019-07-14 15:08发布

在调试板子时,遇到的现象。
if语句判断,并不成立。ret的值是0,但是if(1==ret)语句却可以执行。这是什么情况。大家有碰到过的吗。指教一下
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
16条回答
ldd1211_
1楼-- · 2019-07-16 06:21
应该是编译器优化的原因,在调试的时候界面中显示的是C语言,实际是按照汇编语言来进行调试的,而在优化过程中,编译器会对你写的C语言进行删减,增加以及顺序上的调整,所以汇编与C并不是对应的,最终导致了这种情况
帅帅的欧尼酱
2楼-- · 2019-07-16 11:06
一般我遇到这个问题是由于编译器的问题,一般会加上volatile,然后打印日志调制,debug有时候确实会出现这个问题。
naugia
3楼-- · 2019-07-16 11:34
 精彩回答 2  元偷偷看……
dd66666
4楼-- · 2019-07-16 16:41
谢谢大家,是编译器优化问题。改一下优化等级就可以了

一周热门 更多>