int x=y=z=1,t,执行t=++x||++y&&++z后,x、y、z、t的值~

int x=y=z=1,t,执行t=++x||++y&&++z后,x、y、z、t的值~
正确答案是2、1、1、1
我有两种思路
如下:
1)因为前置++的优先级高于&&,&&又高于||,
所以原式可化简为
t=2||2&&2=2&&1=1;即x=y=z=2,t=1
2)看了很多题目,发现一般都不是用自加后的数字来运算,但是因为&&优先级高于||
所以原式化为.这个地方又我不知道了,按理说应该先计算++y||++z,可电脑计算不是从左至右的么,那到底要不要先把++x算出来呢?

问答人气:474 ℃时间:2021-09-19 16:10:08
优质解答

我给你说下c++和c语言处理这行代码的过程.
首先是从左往右的.
t=++x||++y&&++z
第一步:
t= (++x) || (++y&&++z);
因为||这个符号的优先级最低.
第二步:
++x; 执行完之后x=2;
(对于||这个符号有个特点就是如果左边是非零,那么直接就返回值了,不用执行右边了.因为没有意义,1或0还是1.)
第三部:
||左边是非零,直接结束,t=1;
所以t=1,x=2;y和z没变.

我来回答
请使用1024x768 IE6.0或更高版本浏览器浏览本站点,以保证最佳阅读效果。本页提供作业小助手,一起搜作业以及作业好帮手最新版!
版权所有 CopyRight © 2012-2024 作业小助手 All Rights Reserved. 手机版