c语言 int a=0,b=4,k=2; k=a+1>0||(++a<0)&&(!(b--<=0)); printf("%d,%d,%d",k,a,b);
答案为什么是1,0,4我知道或运算前面的为真后后面就不执行了可括号里的不应该最先执行的吗还有(b--<=0)不应该判断完后给b减1吗我觉得应该是1,1,3啊...
答案为什么是1,0,4 我知道或运算 前面的为真后 后面就不执行了 可括号里的 不应该最先执行的吗 还有(b--<=0)不应该判断完后 给b减1吗 我觉得应该是1,1,3啊
展开
2个回答
展开全部
你既然知道或运算左边表达式为真后后面就停止运算了还这么迷惑。||和&&运算按照从左到右的顺序进行求值,或运算在左边表达式为真的情况下右边就不再进行运算了,所以右边表达式加括号不加括号结果都一样,因为结果已经是真,右边的不再去管它了。你记住或和与运算的运算顺序是从左到右就好,右边表达式有括号没有括号不改变这一规则。
更多追问追答
追问
那b怎么没自减1啊
追答
||右边的表达式完全不参与运算,不参与运算的意思就是不管你表达式是什么都不会做任何处理,被完全略过。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询