2017-03-26 17 views
-1

C++で接頭辞nの後置精数にインクリメント演算子を使用していますが、間違った結果を得ています。ここ は私のコードです:)C++のインクリメント演算子で正しい結果が得られない

0 
2 

しかしイム結果

1 
2 
を得ることを期待結果
#include <iostream> 
using namespace std; 
int main() 
{ 
int a=0; 
cout<<a++<<endl<<++a<<endl; 
} 

+0

'a ++'は 'a'をインクリメントし、その値のコピーを返します。ここには何も予期しないものはありません。 –

+0

両方の使用は1つのステートメント内にあります。あなたは正しいものではない、何らかの種類の左から右の順序を想定しています。 – stark

+0

@ Jaa-cインクリメントする前に値のコピーを返します。ゼロにする必要があります。 –

答えて

0

これは、あなたが接頭または接尾としてそれを使用する場合によっては、インクリメントoperator++とどのように機能するとしなければならない。

#include <iostream> 

int main() { 
    int a = 0; 
    std::cout << a++ << std::endl 
    // Output: 0. ++ as posfix creates an incremented copy of "a" and AFTER the line gets executed. 
    std::cout << ++a << std::endl; 
    // Output: 1. ++ as prefix creates a copy of "a", an incremented copy BEFORE the line gets executed. 

    std::cout << a++ << std::endl << ++a << std::endl; 
    // Output: 0 
    //   1. 
    // "a" get incremented only by the prefix operator++ 
} 

注:using namespace stdを変更し、私はあなたが名前空間を使用recommend +スコープ演算子(C++標準ライブラリコンテナの場合はstd::など)。

+0

ありがとうサンチャゴヴァレラ:) – Romeo

+0

No prob @Romeo。 Upvoteもやってください:) – 0xDEFACED

+0

私はupvoted :)しかし、私はそれが表示されませんメッセージを取得し、15未満の評判を持っている – Romeo

関連する問題