C语言中。int a=1,b=0,c=1; 执行语句 !b||++a&&++c 后,a,b,c

inta=1,b=0,c=1;执行语句!b||++a&&++c后,a,b,c的值分别是……??请详细解说下。答案还是1,0,1,为啥不是2,0,2啊?a和c前面不都是++... int a=1,b=0,c=1;执行语句 !b||++a&&++c 后,a,b,c的值分别是……??请详细解说下。答案还是1,0,1,为啥不是2,0,2啊?a和c前面不都是++吗,怎么不是先加1再赋值?? 展开
 我来答
百度网友5433dcf
2013-01-01 · TA获得超过420个赞
知道小有建树答主
回答量:304
采纳率:0%
帮助的人:176万
展开全部
对于!b||++a&&++c;按照规定, 要先计算 && (&&的优先级比||高)也就是需要计算出 ++b和c++;
但是按照优化, 只要计算出 a>0 就可以了,不需要计算出 ++b和c++,“||”在这里起到了短路的功能(短路就是,当第一条表达式能决定整条表达式的结果,那么后面的语句都不执行!),这也叫做布尔法则,给你推荐一本书叫做“c语言解惑”。望采纳
alex20035
2013-01-01 · 商业零售物流条码应用
alex20035
采纳数:78 获赞数:378

向TA提问 私信TA
展开全部
首先根据运算符优先级和结合性。((!b))||((++a)&&(++c))
然后先算!b,此时(!b)=1,为true,于是不需要算||后的内容了。因为:true||任意表达式=true。
注意,运算符优先级不代表计算优先级。
如果你把b=1 结果就是212
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zx_start
2013-01-01
知道答主
回答量:11
采纳率:0%
帮助的人:8.2万
展开全部
或运算,而且是左结合,!b为真,整个表达式就为真了,不再继续运算,也就是++a和++c没有运算,表达式的结果就出来了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式