c语言设a=2,b=0,c;则执行c=b&&a--;语句后,a的结果是2, 为什么a不是等于1呢?当b=1时,a为什么又等于1呢

 我来答
匿名用户
2012-01-04
展开全部
&&的特点是,只要左右表达式有一个为0,则整个表达式为0,
并且&&的运算顺序是从左向右,
所以如果&&的左表达式为0,则不会再计算右表达式,直接将整个表达式返回0,这个又叫&&短路

所以当b=0时,不会再处理a--,直接b&&a--返回0了,所以a值不变
而当b=1时,还要再根据右值是否为0才能判断整个表达式的值,所以会再处理a--,所以a值为1
洛切鹏F
2012-01-04 · TA获得超过1539个赞
知道小有建树答主
回答量:475
采纳率:100%
帮助的人:339万
展开全部
首先, 逻辑与运算符&&有一个特征叫 “短路求值”,即从左往右运算的过程中,如果表达式的值已经确定,则不会计算剩下的表达式。
c=b && a-- 这个表达式中 b的表达式如果不成立,即&&的前半部分已经为假,整个表达式的值也是为假,所以后面的a--的语句就没有执行。
相反 b的表达式成立的情况下, &&的前半部分为真,整个表达式的值还不能确定,还依赖于a--的值。所以a--的语句执行后就a就等于1了。
除了&&,逻辑或运算符 || 也有这样的特点
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
qwe7275
2012-01-04 · TA获得超过158个赞
知道答主
回答量:138
采纳率:0%
帮助的人:111万
展开全部
c=b&&a-- 因为b=0,是false,不执行&&后面的a--,所以a没变
c=b&&a-- 因为b=1,是true,执行&&后面的a--,执行后,a自减1,所以a=1
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
shine1991
科技发烧友

2012-01-04 · 智能家居/数码/手机/智能家电产品都懂点
知道顶级答主
回答量:4.7万
采纳率:82%
帮助的人:2.3亿
展开全部
&&运算符的短路效应

我们知道&&运算符相当于逻辑运算符 且
也就是说,只有&&两侧都为真(也就是非零)时,这个表达式的结果才为真(一般默认是1)
那么假如&&左侧就是假(0)了,那么整个表达式可定就是假(0)了,右侧的当然也就没有必要去判断、执行了

类似的 || 运算符也有同样的效果
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
沉沉卡
2012-01-04 · TA获得超过132个赞
知道答主
回答量:77
采纳率:66%
帮助的人:19.3万
展开全部
考虑运算符的优先级
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式