C++ int i=1,i2=0; i2=(++i)+(++i); 结果怎么是 i=3,i2=6?C++int i=1,i2=0;i2=(++i)+(++i);//+(++i);cout
来源:学生作业帮助网 编辑:作业帮 时间:2024/08/31 02:34:38
![C++ int i=1,i2=0; i2=(++i)+(++i); 结果怎么是 i=3,i2=6?C++int i=1,i2=0;i2=(++i)+(++i);//+(++i);cout](/uploads/image/z/14674616-8-6.jpg?t=C%2B%2B+int+i%3D1%2Ci2%3D0%3B+i2%3D%28%2B%2Bi%29%2B%28%2B%2Bi%29%3B+%E7%BB%93%E6%9E%9C%E6%80%8E%E4%B9%88%E6%98%AF+i%3D3%2Ci2%3D6%3FC%2B%2Bint+i%3D1%2Ci2%3D0%3Bi2%3D%28%2B%2Bi%29%2B%28%2B%2Bi%29%3B%2F%2F%2B%28%2B%2Bi%29%3Bcout)
C++ int i=1,i2=0; i2=(++i)+(++i); 结果怎么是 i=3,i2=6?C++int i=1,i2=0;i2=(++i)+(++i);//+(++i);cout
C++ int i=1,i2=0; i2=(++i)+(++i); 结果怎么是 i=3,i2=6?
C++
int i=1,i2=0;
i2=(++i)+(++i);//+(++i);
cout
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);同样++运算符优先,于是进行第一个++运算,但不同的是,这里第二个运算的是-符号,这不是运算,而是负符号,所以比第二个++运算更先提取;接下来第二个++运算,最后是减运算;运算顺序为,++、-(负号)、++、-(减号).能懂么?
问题很犀利,让我也学到了很多