C语言调试时遇到的if语句不成立,但是可以执行
在调试板子时,遇到的现象。if语句判断,并不成立。ret的值是0,但是if(1==ret)语句却可以执行。这是什么情况。大家有碰到过的吗。指教一下
我经常遇到这种情况 不知道为什么 但是奇怪的是最后并不影响我的判断结果 应该是编译器优化的原因。看看汇编代码就知道了。估计是那条代码在其他地方还有。 1、降低优化等级;
2、ret定义为uint32_t; 这个遇到过,应该是调试器的问题,有时候调试器显示的变量值更新不及时,你这个ret初始化为0的缘故,可以试试吧这个ret定义的时候初始化为一个其他值,看看是否这里显示的是初始化的值。 编译器优化等级调到0 没遇过,坐等答案.. volatile 吧 file:///C:\Users\CJ\AppData\Roaming\Tencent\Users\2839084093\TIM\WinTemp\RichOle\OAW@659P72I07P04D}VJ73X.png
这里选为0.就不会进去了
首先看他初始化没有,再看看这个值怎么来的?受到硬件影响大吗,要不要加上volatile?
页:
[1]
2