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么?请高手解答哟
展开
2个回答
展开全部
这道题考的是逻辑运算的问题。
首先应该进行++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++)则没有执行。
如果不明白可以追问。
希望我的解答对你有所帮助。
首先应该进行++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++)则没有执行。
如果不明白可以追问。
希望我的解答对你有所帮助。
更多追问追答
追问
逻辑运算,或和与不是相同的优先级么?应该是从左到右顺序执行的呀,为什么后面的就不执行了?自动的增加了括号改变了优先级?
追答
逻辑运算顺序应该是非,与,或的顺序。。。
展开全部
在这里给你说下运算过程:
++i 后,i 是3就不用解释了,
为什么j =2,k =0, a = 1;在这里给人讲解下:
首先是优先级问题,++ 运算高,所以i = 3;
然后是 ||和&& 的优先级,这两个优先级是一样的,而且运算规则是从左往右,++i||++j在这里 ,执行++i后,为真,所以 ||后面的已经不再执行,你要知道运算符||的作用是有一个为真,即为真,而且后面即使是假也不再执行。
++i 后,i 是3就不用解释了,
为什么j =2,k =0, a = 1;在这里给人讲解下:
首先是优先级问题,++ 运算高,所以i = 3;
然后是 ||和&& 的优先级,这两个优先级是一样的,而且运算规则是从左往右,++i||++j在这里 ,执行++i后,为真,所以 ||后面的已经不再执行,你要知道运算符||的作用是有一个为真,即为真,而且后面即使是假也不再执行。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询