int i=1,j=1,k=2; if(j--||k++&&++i) printf("%d,%d,%d\n",i,j,k); 怎么做,求详解、

 我来答
风菲星囡
2019-12-05 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:33%
帮助的人:864万
展开全部

按优先级来说
&&
大于
||
所以
j--||k++&&++i
相当于
j--
||
(k++
&&
++i)

a
||
b
中只要一个为真,则
a
||
b为真,所以当a为真的时候,就能确定
a||b一定为真,此时不再计算
b了。
所以
由于
j--是先使用j的值,然后改变j的值,由于j=1,所以为真,然后j变成0了
由于
j--为真了,则(k++
&&
++i)
不再判断执行了,所以i和k的值不变。
所以
结果为
1,0,2
千菀柳仉晖
2019-05-03 · TA获得超过2.9万个赞
知道大有可为答主
回答量:1.1万
采纳率:29%
帮助的人:727万
展开全部
结果是1,0,2
解释:if条件句中的
j--||k++&&++i是一个逻辑表达式,逻辑运算符的结合性是左结合,当逻辑表达式进行运算时,首先判断j--的真值,其真值为非零(也就是1),这样就可以判断出逻辑表达式为真,所以逻辑表达式后面的语句将不再执行,最后结果是i不变,j-1,k不变
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
英天工闾蕴
2019-10-23 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:35%
帮助的人:561万
展开全部
优先级
&&
大于
||
,只是j--||k++&&++i相当于j--
||
(k++
&&
++i),把(k++
&&
++i)当做一个整体表达式,而不是(j--||k++)&&++i而已,告诉你需要用到后面的时候的一个运算顺序,而不是(k++
&&
++i)先做运算,运算的先后关系是由if语句的顺序决定的,而if的判断顺序是从左到右的顺序,&&和||的优先级无关。
其他的参考“倒霉熊lujin”的答案。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友1b2f7e605f7
2020-04-07 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:28%
帮助的人:947万
展开全部
前面的大哥说得很对,关键就是while()语句里面的特点是j--,先用j的值比较再减1的,所以最后一次循环的情况是:
i=5:
j=1(来自语句
j=i%2

k=7
j=0
k=8
j=-1(拿此时的j与0比较不成立,只是不执行相应语句而已,但是条件里的语句要执行,再自减1)
j=-2
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
毕承教望锦
2020-02-29 · TA获得超过3.1万个赞
知道大有可为答主
回答量:1.1万
采纳率:34%
帮助的人:940万
展开全部
j--满足条件就不看k++,所以k不变,然后j--之后,j为0,k为2
++i当中i不变,i为1
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式