前置演算と後置演算

前置演算と後置演算の処理の仕方の違いをよくしらず、
はまってしまったのでメモ。

前置演算(先に処理をしてから代入)
ex)
++i;

n = 2;
a = ++n;

としたとき、 最終的にa = 3、n = 3

後置演算(先に代入をしてから処理)
ex)
i++;

n = 2;
a = n++;

としたとき、 最終的にa = 2、n = 3 。。
これぼくはa = 3となるとおもってましたw
ためしに下記で実行したらたしかに後置演算のほうはさきに代入しているのがよくわかりました。

#include <iostream>
#include <string>

 using namespace std;

int main (int argc, const char * argv[])
{

    char c1,c2;
    int pos;
    string str = "abc";

    pos = 0;
    c1 = str[pos++];
    c2 = str[pos];

    cout << "c1 = " << c1 << endl;
    cout << "pos = " << pos << endl;
    cout << "c2 = " << c2 << endl;    

    return 0;

} 

実行結果

c1 = a
pos = 1
c2 = b