後置インクリメント・デクリメント
CoddyのC++ジャーニー「基礎」セクションの一部。レッスン 19/74。
前のレッスンでは、インクリメント演算子(++)とデクリメント演算子(--)について学びました。これらの演算子には、prefixとpostfixの2つの形式があります。
前置形式は変数の前に記述します(例:++x または --x)。後置形式は変数の後に記述します(例:x++ または x--)。
実際には、どの形式を使うべきかを知っていることが重要です。たとえばゲームでは、ヒットするたびに score++ を使ってプレイヤーのスコアを追跡したり、ゲームが終了したかどうかを確認する前に失ったライフをすぐに反映するために --lives を使ったりするでしょう。ループでは、prefix と postfix のどちらを選ぶかによって、更新の前後で式に使用される値が変わることがあります。
2つの形式の違いは微妙ですが、重要です:
- Prefix形式:変数をインクリメント/デクリメントしてから、新しい値を返します。
- Postfix形式:変数の現在の値を返してから、その変数をインクリメント/デクリメントします。
違いを説明する例を見てみましょう:
int x = 5;
int y = x++;
// y = 5, x = 6 (後置: y は元の値を取得し、その後 x がインクリメントされる)
int a = 5;
int b = ++a;
// b = 6, a = 6 (前置: a が先にインクリメントされ、その後 b が新しい値を取得する)最初のケースでは、y に x のoriginalの値(5)が代入され、その後 x が6にincrementedされます。2番目のケースでは、まず a がincrementedされ、その新しい値(6)が b に代入されます。
同じロジックが減算演算子にも適用されます:
int x = 5;
int y = x--;
// y = 5, x = 4(後置: yは元の値を取得し、その後xがデクリメントされる)
int a = 5;
int b = --a;
// b = 4, a = 4(前置: まずaがデクリメントされ、その後bが新しい値を取得する)チャレンジ
初心者x、y、zの初期化を含むコードが与えられています。(これらの行を削除しないでください!)
あなたの課題は、increment/decrement演算子を使用して、以下の操作をこの順番で実行することです。
- postfix increment演算子を使用して、
xの現在の値をaに代入し、その後xをインクリメントします。 - prefix decrement演算子を使用して
yをデクリメントし、その新しい値をbに代入します。 - postfix decrement演算子を使用して、
zの現在の値をcに代入し、その後zをデクリメントします。
これらの操作を実行した後、a、b、c、x、y、zの値を、以下の形式でコンソールに出力してください。
a: [value of a]
b: [value of b]
c: [value of c]
x: [value of x]
y: [value of y]
z: [value of z]自分で試してみよう
#include <iostream>
int main() {
int x = 10;
int y = 20;
int z = 30;
int a, b, c;
// 以下にコードを入力してください
// 以下の行は変更しないでください
std::cout << "a: " << a << std::endl;
std::cout << "b: " << b << std::endl;
std::cout << "c: " << c << std::endl;
std::cout << "x: " << x << std::endl;
std::cout << "y: " << y << std::endl;
std::cout << "z: " << z << std::endl;
return 0;
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
基礎のすべてのレッスン
自分で練習してみよう: C++オンラインコンパイラ