39838

[code]

    int number = 6;
    number++;
    cout << number << endl;
    
[/code]

上記コードは7と出力されます。

一方、

[code]

    int number = 6;
    int x = 0;
    x =number++;
    cout << x << endl;
    
[/code]

上記コードは6と出力されます。

どちらのコードも7と出力されると思っていただけに  
なぜこのような違いが生じるかご教示いただけますと幸いです。


CC BY-SA 3.0
2017-11-25T15:43:34.080
39837
2018-01-23T01:25:14.523
2018-01-23T01:25:14.523
19110
26303
question
c++
後置インクリメント演算子の使い方によって結果が変わるのは何故？


それが前置演算子ではなく後置演算子だからです。

[関数の創世から深淵まで駆け抜ける関数とはなんぞや講座 -
Qiita#演算子を関数のように解釈してみよう](https://qiita.com/yumetodo/items/cdfb41781d32d98be1b4#%E6%BC%94%E7%AE%97%E5%AD%90%E3%82%92%E9%96%A2%E6%95%B0%E3%81%AE%E3%82%88%E3%81%86%E3%81%AB%E8%A7%A3%E9%87%88%E3%81%97%E3%81%A6%E3%81%BF%E3%82%88%E3%81%86)


CC BY-SA 3.0
2017-11-25T15:45:11.897
39838
2017-11-25T15:45:11.897
23941
39837
answer


C++ において、

  * 前置インクリメント `++number` は、`number` をインクリメントし、インクリメントされた値を返します。
  * 後置インクリメント `number++` は、`number` をインクリメントし、元の値のコピーを返します。

したがって、後者のプログラムの `x = number++;` という部分では、`number` の値である `6` が  
`x` に代入されると共に、副作用として `number` がインクリメントされます。したがって `x` には `6` が代入されているので、`cout
<< x << endl;` では `6` が出力されます。

これに対して、もし `x = ++number;` と書いた場合、`x` には `7` が代入されることになります。


CC BY-SA 3.0
2017-11-25T21:45:34.147
39843
2017-11-25T21:45:34.147
19110
39837
answer