int i=2,j=2,k=0;int a;a=++i||++j&&k++;printf("%d,%d,%d",i,j,k);输出的结果是什么?a的运算过程是怎样

i=3可以理解,但是为什么j=2,k=0呢?而且为什么k=0时,输出的a=1呢?那不是应该等于0么?请高手解答哟... i=3可以理解,但是为什么j=2,k=0呢?而且为什么k=0时,输出的a=1呢?那不是应该等于0么?请高手解答哟 展开
 我来答
576953615
2012-10-17 · TA获得超过1.2万个赞
知道答主
回答量:606
采纳率:0%
帮助的人:184万
展开全部
这道题考的是逻辑运算的问题。
首先应该进行++i的运算,i=2则++i=3;
之后++i||(或)(++j&&(与)k++)这里++j&&k++是逻辑运算应该放在一起,得到的值是一个boolean值
把(++j&&k++)看成一个表达式A
即++i||A ++i=3 也就是3||A
逻辑“或”运算,或运算两边如果有一个为真则为真.
所以a=1; 而表达式A(即++j&&k++)则没有执行。
如果不明白可以追问。
希望我的解答对你有所帮助。
更多追问追答
追问
逻辑运算,或和与不是相同的优先级么?应该是从左到右顺序执行的呀,为什么后面的就不执行了?自动的增加了括号改变了优先级?
追答
逻辑运算顺序应该是非,与,或的顺序。。。
百度网友afe2647
2012-10-17 · TA获得超过563个赞
知道小有建树答主
回答量:259
采纳率:100%
帮助的人:144万
展开全部
在这里给你说下运算过程:
++i 后,i 是3就不用解释了,
为什么j =2,k =0, a = 1;在这里给人讲解下:
首先是优先级问题,++ 运算高,所以i = 3;
然后是 ||和&& 的优先级,这两个优先级是一样的,而且运算规则是从左往右,++i||++j在这里 ,执行++i后,为真,所以 ||后面的已经不再执行,你要知道运算符||的作用是有一个为真,即为真,而且后面即使是假也不再执行。 
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式