中易网

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

答案:6  悬赏:20  
解决时间 2021-04-27 12:08
  • 提问者网友:迷茫庸人
  • 2021-04-26 21:05
求解释if判断条件,在解释一下括号里的逻辑如何判断,谢谢
答案是b值并没有减1.但我还是搞不清为什么b为啥没有减1
最佳答案
  • 二级知识专家网友:颜值超标
  • 2021-04-26 21:50
++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楼网友:强势废物
  • 2021-04-27 01:42
++a<0 先判断a是否大于0 然后再加1 b--<=0 先b—1 然后再判断<=0
  • 2楼网友:桑稚给你看
  • 2021-04-27 00:28
首先根据运算符优先级和结合性。((!b))||((++a)&&(++c)) 然后先算!b,此时(!b)=1,为true,于是不需要算||后的内容了。因为:true||任意表达式=true。 注意,运算符优先级不代表计算优先级。 如果你把b=1 结果就是212
  • 3楼网友:猖狂的痴情人
  • 2021-04-26 23:34
1 if 里面有两个判断语句, 如果第一个为false,不管第二个为false或者为ture,结果都为false,所以如果第一个为false,就没有必要执行第二个了,程序就是这么做的。 2 在你的判断中++a结果0.很显然0<0 是false,所以此时你整个判断语句就为false。下面即使再有N个条件也不会去判断了。
  • 4楼网友:一场云烟
  • 2021-04-26 23:26
(++a<0)&&!(b--<=0) 运算级() > ++ > -- > < > <= > ! >&& 执行顺序 ++a<0其中先++a=0 ++a<0 不成立 值为0 &&两边都成立值为1 只要有0就不成立 所以后面的就短路了 后面根本就没有执行 单纯执行到++a<0就结束了 if的执行体不执行.....
  • 5楼网友:情战凌云蔡小葵
  • 2021-04-26 23:02
++a是先算a=a+1再把a的值作为(++a)的值,如当a=-1时则(++a)=0;a=0. b--则是先将b的值作为b--的值,在执行b=b-1,如当b=1时则(b--)=1,b=0; &&是数学中并的关系,!则是对()里的否定,如果()里的表达式成立则,!()不立,!的运算级高所以先执行!(),在执行&&。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息