-2

私はプログラミングの完全な初心者で、約 2 日前に C++ の学習を始めたばかりです。私が本当に理解していない奇妙な問題があります。

int main()
{
   int value1;
   int value2;
   cin >> value1 >> value2;
   value1 = (value1 > 5) ? value1++ : value1;
   value2 = value2++;
   cout << value1 << " " << value2 << endl;
}

さて、value1 = 6 と value2 = 2 としましょう。表示は 6 3 です。私が理解している限り、ポスト インクリメント演算子はそのオペランドに 1 を追加しますが、それが使用されている現在の式の値はまだ "un-これは、value2 の場合に意味があります。value2 は式「value2++」に割り当てられ、value2++ には値 2 が割り当てられます。割り当てられると、++ の効果が発生し、value2 の値に 1 が追加されます。しかし、value1 の場合はどうでしょうか。上記のコードでポストインクリメント演算子が使用された後、value1 の値がインクリメントされないのはなぜですか?

4

1 に答える 1

0

エラーは、割り当てvalue1が効果的でvalue = value1++;あることです...したがって、value1、6の現在の値を読み取り、それをインクリメントしますが、その6を別の場所に保存します(インクリメントが発生した場所を上書きします)。

value1 = (value1 > 5) ? value1 + 1 : value1;代わりに使用してください。

于 2013-11-10T11:44:11.020 に答える