c语言 int a=0,b=4,k=2; k=a+1>0||(++a<0)&&(!(b--<=0)); printf("%d,%d,%d",k,a,b);
答案:2 悬赏:0 手机版
解决时间 2021-03-01 01:26
- 提问者网友:感性作祟
- 2021-02-28 08:46
c语言 int a=0,b=4,k=2; k=a+1>0||(++a<0)&&(!(b--<=0)); printf("%d,%d,%d",k,a,b);
最佳答案
- 五星知识达人网友:西岸风
- 2021-02-28 09:39
你既然知道或运算左边表达式为真后后面就停止运算了还这么迷惑。||和&&运算按照从左到右的顺序进行求值,或运算在左边表达式为真的情况下右边就不再进行运算了,所以右边表达式加括号不加括号结果都一样,因为结果已经是真,右边的不再去管它了。你记住或和与运算的运算顺序是从左到右就好,右边表达式有括号没有括号不改变这一规则。追问那b怎么没自减1啊追答||右边的表达式完全不参与运算,不参与运算的意思就是不管你表达式是什么都不会做任何处理,被完全略过。追问奥
全部回答
- 1楼网友:毛毛
- 2021-02-28 11:18
因为C条件运算符是短路的,a+1>0为真后无论后面怎样整个式子都为真,后面就直接忽略了,括号也不考虑追问那b怎么没自减1啊
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯