看一下为什么?

 我来答
金色潜鸟
2016-01-18 · TA获得超过3.2万个赞
知道大有可为答主
回答量:1.3万
采纳率:89%
帮助的人:5702万
展开全部
int x=1,y=1,z=1;
int w;
w= ++x || ++y && ++z; 这是 赋值语句,而这个语句是逻辑表达式,它可以写成:
w = (++x) || (++y && ++z);
看成 w = A || B; 逻辑或 运算, 如果 A 或 B , 有 一个 为 真,结果 就是真。
逻辑或 运算 有 这样的 规则: 如果 A 为真,结果就为真,同时 跳过 B 的计算。
我们的情况 正好就是 跳过 B.
因为 x初值1 , ++x 是前缀加,要先增 1,再用于表达式,于是 x 变 2。凡不等于 0 为“真”,所以 2 也是“真”。 跳过 B. (y=1,z=1 不变化)
逻辑表达式为真。所以 w 为真。真用 1表示。w=1.
---
4个答案里 选 A。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
chinaboyzyq
2016-01-18 · TA获得超过1.3万个赞
知道大有可为答主
回答量:1.3万
采纳率:89%
帮助的人:3265万
展开全部
c\c++对逻辑运算采用短路算法,即前一部分可以确定整个表达式为真时,后面的不再执行运算,这里||前面的部分为真,后面的不再执行,所以只执行了++x
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式