有这么一个题目:
#include <iostream> using namespace std; int main() { int i = 100; i += (i++); cout << i << endl; i = 100; i += (++i); cout << i << endl; return 0; }
输出结果是什么?
这个题目主要是考察i++和++i的区别,之前一直被这类问题困扰,一直搞不清楚这2个的区别,直到有一天看到这么一份资料:
//i++实现 最后虽然本身值改变了,但返回的是之前的值 int nTemp; nTemp = i; i = i+1; return nTemp;
//++i实现 最后本身值改变了,返回也是值本身 i = i+1; return i;
于是,i += (i++);可以这样理解:
i += i; //100+100 = 200 i += 1; //200+1 = 201
i += (++i);可以这样理解:
i += 1; //100+1 = 101 i += i; //101+101 = 202
所以,输出的结果是:201
202
++i和i++ 以及其底层实现
