C语言中if判断语句为什么是错误的仍执行了它下面的语句?

已经检验过if判断语句不成立!

if(WU[m]+P[m]<Ep[m]&&WL[m]<0.16667*(Ep[m]-EU[m]))
首先你要看这个IF里判断语句符号的优先级,如果嫌优先级麻烦,不妨多加几个括号,变成容易理解的方式,如if((WU[m]+P[m]<Ep[m])&&(WL[m]<0.16667*(Ep[m]-EU[m])))虽然括号有点多,但是比较条理,另外&&两边都真才能执行下面的语句追问

问题是它已经判断是假了,可还是执行了

追答

建议你把判断语句分成两部分吧,一个一个的判断,看哪一个是假的
if(WU[m]+P[m]<Ep[m])
if(WL[m]<0.16667*(Ep[m]-EU[m]))

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-04-09
请检验是否是逻辑型。追问

if(WU[m]+P[m]<Ep[m]&&WL[m]<0.16667*(Ep[m]-EU[m]))
这样的应该是属于逻辑型吧?有什么说法吗逻辑型的?

追答

代码?

追问

整个程序很长的,贴不上,我已经单独把这个判断语句拿出来printf一下显示是0了,不知道为什么还会执行

追答

运算优先级看了没有

追问

if(WU[m]+P[m]<Ep[m]&&WL[m]<0.16667*(Ep[m]-EU[m]))
{ EU[m]=WU[m]+P[m];
EL[m]=WL[m];
ED[m]=0.16667*(Ep[m]-EU[m])-EL[m];
}
就是这个判断语句

追答

((WU[m]+P[m])<Ep[m]) && (WL[m]<0.16667*(Ep[m]-EU[m])) 请确认是否等价于这个

第2个回答  2012-04-09
可否给看一下代码追问

整个程序很长,前面的都执行的很好,但就是碰到这个判断语句时,它偏偏执行了,我已经单独把这个判断语句拿出来printf一下显示是0了,不知道为什么还会执行

相似回答