问题:
int i=5,j=5;
p=(i++)+(i++)+(i++);
q=(++j)+(++j)+(++j);
输出p和q的结果为多少?
解答:
首先,要明白几个知识点:
1)
i++计算步骤是:
第一步:(i++这个运算符结果)=i;(重点:返回的是一个临时对象)
第二步:i=i+1;
++i计算步骤是:
第一步:i=i+1;
第二步:(++i这个运算符结果)=&i;(重点:返回的是对i的引用)
2)
在计算(i++)+(i++)+(i++)和(++j)+(++j)+(++j)过程中,实际的计算顺序是【【(i++)+(i++)】+(i++)】和【【(++j)+(++j)】+(++j)】,也就是说从左往右,依次两个两个的做加法。
下面来分析p=(i++)+(i++)+(i++);p等于多少。
首先计算【(i++)+(i++)】等于多少,对于第一个(i++)等于5,此时i已经变为6了,因此第二个(i++)等于6。因此【(i++)+(i++)】=5+6=11,同理可得p=【11+(i++)】=11+7=18。
接着来分析q=(++j)+(++j)+(++j);q等于多少。
首先计算【(++j)+(++j)】,对于第一个(++j):先是j=j+1,此时j=6,同时(++j)对j进行一个引用,也就是目前也等于6,对于第二个(++j)此时,也是先j=j+1=6+1=7,(++j)对j进行一个引用,此时也就是等于7,注意,第一个(++j)也是对j的引用,此时也要变成7,所以最后【(++j)+(++j)】=【7+7】=14,然后计算【14+(++j)】=14+8=22。
(++i)+(++i)+(++i)和(i++)+(i++)+(i++)问题解答
于 2020-05-10 10:32:06 首次发布