作业帮 > 综合 > 作业

C++ int i=1,i2=0; i2=(++i)+(++i); 结果怎么是 i=3,i2=6?

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/26 01:12:52
C++ int i=1,i2=0; i2=(++i)+(++i); 结果怎么是 i=3,i2=6?
C++
int i=1,i2=0;
i2=(++i)+(++i);//+(++i);
cout
这个问题涉及到存储的问题,内存存储计算式的时候是按照优先级和先后顺序存储的,提取的时候是逆着提取,所以考虑这一点就容易理解了,你若学过数据结构就好理解了.
用第二个式子解释:i2=(++i)+(++i)+(++i);三个++运算符,两个+运算,++运算符优先级高,先提取存储单元里的两个++运算符,于是i进行了两次++运算,变为3;再提取第一个+运算,式子运算到了前两项,即(++i)+(++i)等于6(相当于第一个式子的运算了);然后提起第三个++运算,i变为4,;接下来提取最后一个+运算,即6+4;总结一下,运算顺序为如下:++、++、+、++、+.这样讲能明白么?
用第三个式子讲i2=-(++i)-(++i);同样++运算符优先,于是进行第一个++运算,但不同的是,这里第二个运算的是-符号,这不是运算,而是负符号,所以比第二个++运算更先提取;接下来第二个++运算,最后是减运算;运算顺序为,++、-(负号)、++、-(减号).能懂么?
问题很犀利,让我也学到了很多