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啊 展开
 我来答
百度网友0f6f4d4
推荐于2016-09-21 · TA获得超过112个赞
知道答主
回答量:100
采纳率:100%
帮助的人:39.4万
展开全部
你既然知道或运算左边表达式为真后后面就停止运算了还这么迷惑。||和&&运算按照从左到右的顺序进行求值,或运算在左边表达式为真的情况下右边就不再进行运算了,所以右边表达式加括号不加括号结果都一样,因为结果已经是真,右边的不再去管它了。你记住或和与运算的运算顺序是从左到右就好,右边表达式有括号没有括号不改变这一规则。
更多追问追答
追问
那b怎么没自减1啊
追答
||右边的表达式完全不参与运算,不参与运算的意思就是不管你表达式是什么都不会做任何处理,被完全略过。
飝快de时间
2015-04-12 · TA获得超过351个赞
知道小有建树答主
回答量:190
采纳率:100%
帮助的人:211万
展开全部
因为C条件运算符是短路的,a+1>0为真后无论后面怎样整个式子都为真,后面就直接忽略了,括号也不考虑
追问
那b怎么没自减1啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式