keil MDK C语言 if 条件判断

if(PureWaterTankDrainLevel>5.0) // 防止纯水箱液位低于5CM时,纯水泵干转损坏
{
PureWaterPumpON();
}
else PureWaterPumpOFF();
源代码如上,PureWaterTankDrainLevel是float型数据,数值恒定为73.588, 。编译后,程序执行完if(PureWaterTankDrainLevel>5.0) 里的PureWaterPumpON();语句后紧接着就执行else PureWaterPumpOFF();语句了。问题,明明 我的if里的条件为真啊,为什么还要执行后面的 else语句!!哪位大侠帮忙分析下,在线等。。。。好久没用百度了,可能没有什么分了

是你的BSP_595BitSet和BSP_595BitClr,这两行显然是宏定义,根据现象很可能是这两个宏中有相同的语句行。
还有一点要问,调试时执行语句的高亮行乱跳,但你的程序结果对不对?如果程序结果正确,则肯定是优化的问题,出现这样的问题是因为调试界面做得不太好;
如果程序结果错误,才会与编译器有关。追问

程序结果当然是错的了,把后面的 else 语句 加个花括号括起来就OK了。。。晕啊 。。
另外我想问问“是你的BSP_595BitSet和BSP_595BitClr,这两行显然是宏定义,根据现象很可能是这两个宏中有相同的语句行。”这部分内容不是提的问题里的吧?!

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答