c语言求解

为什么b的结果会不一样??y的结果为什么一个是0一个是1??... 为什么b的结果会不一样??y的结果为什么一个是0一个是1?? 展开
 我来答
松甜恬0Je4ba
2014-04-11 · TA获得超过2.6万个赞
知道大有可为答主
回答量:7475
采纳率:100%
帮助的人:3280万
展开全部
a && b 只有a和b都为真的时候,结果才为真,所以当a为假时,结果一定为假,此时b就不再执行了,

a || b只要有一个为真,则为真,所以当a为真时,结果一定为真,此时b就不再执行了,

这就是 截断效应。

第二个中由于 ++a 是先+1,然后使用a进行判断,1表示真,所以 整个y就判断出来真假了,所以
--b就不再执行了
追问

那这个又是怎么回事??

百度网友e43033c
2014-04-11 · TA获得超过1130个赞
知道小有建树答主
回答量:933
采纳率:100%
帮助的人:919万
展开全部
y=(++a)&&(--b)&&(c=b+3);
执行 ++a的结果 a为1,为真,因为是 && ,则继续看后面的逻辑判断 --b,结果为0,为假,由于后面也是&&,而 && 操作只要一个为假,结果就为假,所以,后面不执行。
a = 1, b = 0, c = 3, 而 y = 0(&&表达式为假)。

y = (++a)||(--b)||(c=b+3);
执行 ++a,结果 a 为1,为真,因为是 || ,只要一个为真就是真,因此,当(++a)为真的时候,后面就不执行了。
所以:
a = 1, b = 1, c = 3, y = 1(表达式的结果为真)
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
张钺hero
2014-04-11 · 超过19用户采纳过TA的回答
知道答主
回答量:48
采纳率:0%
帮助的人:43.9万
展开全部
||在++a不满足时不会执行--b和c=b+3;而&&是执行到最后一个。你可以吧++a和--b换一下位置再试一下是不是这样,课本上应该有这些的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
一变班爱麻啊堡0J
高粉答主

2020-01-13 · 醉心答题,欢迎关注
知道答主
回答量:11.4万
采纳率:2%
帮助的人:5454万
展开全部
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式