読者です 読者をやめる 読者になる 読者になる

masayuki5160's diary

名古屋でWeb系エンジニアしてます

前置演算と後置演算

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

前置演算(先に処理をしてから代入)
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