关于 ++i*--i 问题自己的理解

来源:互联网 发布:南风知我意txt书包网 编辑:程序博客网 时间:2024/05/04 19:38
 

#inclued "iostream"

using namespace std;

int main()

{

     int i=5;

     int result=++i*--i;

     cout<<"result="<<result<<endl;

     return 0;

}

初看之下,++i=i+1=6;--i=i-1=5;

所以result=5*6=30;

但是程序运行之后的结果却是 result=25;

那这又是为使么呢,自增自减的运算应该结果不会有问题,可是实际结果就是25。

再想想,这里其实是牵连到了内存的使用问题,虽然自增运算后结果为6,但是进行自减运算时是在同样的内存上进行的,结果为5,而进行乘法运算是实际上是5*5,故就有了25这个结果。

故其等价于:

#include "iostream"

using namespace std;

int main()

{

     int i=5,tmp;

     tmp=++i;

     tmp=--i;

     result=tmp*tmp;

     cout<<"result="<<result<<endl;

     return 0;

}