
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么?请高手解答哟
展开
展开全部
这道题考的是逻辑运算的问题。
首先应该进行++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++)则没有执行。
如果不明白可以追问。
希望我的解答对你有所帮助。
更多追问追答
追问
逻辑运算,或和与不是相同的优先级么?应该是从左到右顺序执行的呀,为什么后面的就不执行了?自动的增加了括号改变了优先级?
追答
逻辑运算顺序应该是非,与,或的顺序。。。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询