c程序中输入: int a,b,c; a=b=c=1; ++a||++b&&++c; 执行后abc的值为什么是211,请给出解答

 我来答
White_MouseYBZ
2011-11-14 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:7280万
展开全部
++a||++b&&++c是逻辑表达式,它的值只有“真”与“假”两种,常用“非零”和“零”来表示。++a||++b&&++c第一个逻辑操作符为||,它是“或”操作,就是说它两边的表达式只要有一边为“真”整个表达式的值就为真。而++a使a为2,这已为“真”了,所以整个表达式的值已经肯定为“真”了,||右边的表达式就不再执行了,所以才有了211的结果。这种现象常被称为逻辑表达式运算的“短路”现象,是C/C++提高执行时效的措施之一。
jaybestwang
2011-11-14 · TA获得超过4106个赞
知道小有建树答主
回答量:940
采纳率:0%
帮助的人:739万
展开全部
a=b=c=1; 这句话是连续赋值,结果是a=1, b=1, c=1;
++a||++b&&++c; ||优先级低于&&,所以可以看成(++a)||(++b&&++c);先执行(++a),a=2,++a>0,为真,根据短路原则,后面的表达式不再计算,因为无论后面真假,表达式总为真,所以后面++b&&++c没有计算,结果就是abc为211
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
香克斯桑
2011-11-14 · TA获得超过142个赞
知道答主
回答量:65
采纳率:0%
帮助的人:74.9万
展开全部
逻辑表达式中,若有<条件1>&&<表达式2>,则先计算<条件1>的值,若其值为1(非0),就计算<表达式2>的值,根据表<达式2>的值来判断整个表达式的值是0还是1,但是如果表达式1的值为0的话,就不在计算表达式2的值,因为整个表达式已经可以判定为0了,无需在计算表达式2的值。
若有<条件1>||<条件2>,则先计算<条件1>的值,若其值为0,则通过<条件2>的值来判断整个表达式的值是0还是1。若<条件1>的值为真(非0),则不计算<条件2 >的值,因为此时可以判断整个表达式的值也为1。
所以,在下列表达式中:
++a||++b&&++c
由于++a的值为2(非0),所以此时可以判断整个表达式的值为真,不再需要执行后面的表达式了,所以,这个表达式只计算了++a的值,后面的并没有参与计算!
注:逻辑表达式中,是从左向右计算的!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
红领巾飘过
2011-11-14 · TA获得超过345个赞
知道小有建树答主
回答量:278
采纳率:0%
帮助的人:246万
展开全部
++a||++b&&++c,这句话运算顺序为从左到有。但是||运算如果他的左边为真(非0)则不再执行右边的表达式。是a执行的自加运算。而++b和++c都没有执行。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式