c语言中,a=-1,b=1;if((++a<0)&&!(b--<=0))

求解释if判断条件,在解释一下括号里的逻辑如何判断,谢谢
答案是b值并没有减1.但我还是搞不清为什么b为啥没有减1

++a,先将a加1,再判断,
a=0,(++a<0)为假,值为0
b--,先进行判断,再减一,b=1,所以(b--<=0)值为假,
因逻辑是与,(++a<0)为假,整个表达式必为假,此时便不再算后面的表达式,因此,b的值并没有减1.
结果(++a<0)&&!(b--<=0)值为0,a为0,b为1
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-03-03
1 if 里面有两个判断语句, 如果第一个为false,不管第二个为false或者为ture,结果都为false,所以如果第一个为false,就没有必要执行第二个了,程序就是这么做的。
2 在你的判断中++a结果0.很显然0<0 是false,所以此时你整个判断语句就为false。下面即使再有N个条件也不会去判断了。
第2个回答  2012-03-03
++a是先算a=a+1再把a的值作为(++a)的值,如当a=-1时则(++a)=0;a=0.
b--则是先将b的值作为b--的值,在执行b=b-1,如当b=1时则(b--)=1,b=0;
&&是数学中并的关系,!则是对()里的否定,如果()里的表达式成立则,!()不立,!的运算级高所以先执行!(),在执行&&。
第3个回答  2012-03-03
(++a<0)&&!(b--<=0)
运算级() > ++ > -- > < > <= > ! >&&
执行顺序
++a<0其中先++a=0 ++a<0 不成立 值为0
&&两边都成立值为1
只要有0就不成立
所以后面的就短路了
后面根本就没有执行
单纯执行到++a<0就结束了
if的执行体不执行.....
第4个回答  2012-03-03
++a<0  先判断a是否大于0   然后再加1    b--<=0    先b—1  然后再判断<=0

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网