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

求解释if判断条件,在解释一下括号里的逻辑如何判断,谢谢答案是b值并没有减1.但我还是搞不清为什么b为啥没有减1... 求解释if判断条件,在解释一下括号里的逻辑如何判断,谢谢
答案是b值并没有减1.但我还是搞不清为什么b为啥没有减1
展开
 我来答
青水之畔
推荐于2018-03-13 · TA获得超过118个赞
知道答主
回答量:46
采纳率:0%
帮助的人:22.4万
展开全部
++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
zfl65535
2012-03-03
知道答主
回答量:45
采纳率:0%
帮助的人:29万
展开全部
1 if 里面有两个判断语句, 如果第一个为false,不管第二个为false或者为ture,结果都为false,所以如果第一个为false,就没有必要执行第二个了,程序就是这么做的。
2 在你的判断中++a结果0.很显然0<0 是false,所以此时你整个判断语句就为false。下面即使再有N个条件也不会去判断了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
PrinceJiamin
2012-03-03
知道答主
回答量:34
采纳率:0%
帮助的人:18.3万
展开全部
++a是先算a=a+1再把a的值作为(++a)的值,如当a=-1时则(++a)=0;a=0.
b--则是先将b的值作为b--的值,在执行b=b-1,如当b=1时则(b--)=1,b=0;
&&是数学中并的关系,!则是对()里的否定,如果()里的表达式成立则,!()不立,!的运算级高所以先执行!(),在执行&&。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ml1badboy
2012-03-03 · TA获得超过979个赞
知道小有建树答主
回答量:927
采纳率:100%
帮助的人:430万
展开全部
(++a<0)&&!(b--<=0)
运算级() > ++ > -- > < > <= > ! >&&
执行顺序
++a<0其中先++a=0 ++a<0 不成立 值为0
&&两边都成立值为1
只要有0就不成立
所以后面的就短路了
后面根本就没有执行
单纯执行到++a<0就结束了
if的执行体不执行.....
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
残风摄影约拍
2012-03-03 · TA获得超过156个赞
知道小有建树答主
回答量:412
采纳率:0%
帮助的人:136万
展开全部
++a<0  先判断a是否大于0   然后再加1    b--<=0    先b—1  然后再判断<=0
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式