我想知道是否有人可以解釋增量運算符++
和使用...=... + 1
之間的差異。我寫了下面一小段代碼在10檔分類編號:當解引用迭代器時,x ++和x = x + 1之間的C++差異
#include <iostream>
#include <string>
#include <vector>
using std::cout;
using std::endl;
using std::string;
using std::vector;
using std::cin;
int main()
{
vector<unsigned> vec(11,0);
unsigned num;
while(cin >> num){
if(num < 100)
*(vec.begin() + num/10) = *(vec.begin() + num/10) + 1;
else ;
}
for(vector<unsigned>::iterator it = vec.begin(); it != vec.end(); it++)
cout << *it << endl;
return 0;
}
當我更改此代碼的以下部分:
*(vec.begin() + num/10) = *(vec.begin() + num/10) + 1;
到:
*(vec.begin() + num/10)++;
的代碼不再工作。即每個箱中的數字量保持爲0.
有人能解釋我這兩行代碼之間的區別嗎?這是由於操作的順序嗎?也許它先增加然後解除引用?但如果是這樣,我不明白爲什麼。
BTW:我在C + + 98模式下使用最新版本的G ++
你試過'(*(vec.begin()+ num/10))++;'? – Petr
[運算符優先級](http://en.cppreference.com/w/cpp/language/operator_precedence) – 101010
另外preincrement總是更好,如果你不需要舊值 – KIIV