0Pricing
C++ Academy · レッスン

分岐:if-else、三項演算子、switch-case

明確な分岐のために、if-elseチェーン、三項式、switch文を使い分けます。

「分岐:if-else、三項演算子、switch-case」はCoddyKit上の無料C++ Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはC++ Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 C++ Academyコースには全4レッスンが含まれています。

if文

基本的な条件分岐です。条件が true の場合に本体が実行されます。単一の文では波括弧を省略できますが、常に付けることをお勧めします。

int score = 85;
if (score >= 60) {
    std::cout << "Pass\n";
}

if-else の連鎖

else if と最後の else を使って選択肢を判定します。最初に true になった分岐が実行されます。

if (score >= 90) std::cout << "A";
else if (score >= 80) std::cout << "B";
else if (score >= 70) std::cout << "C";
else std::cout << "F";

ブール条件

bool に変換できる任意の式を使用できます。ポインターは null のとき false として扱われ、整数は 0 のとき false として扱われます。分かりやすさのため、明示的に記述してください。

if 内での初期化(C++17)

C++17 では、if の中で変数を宣言できます。その変数のスコープは if-else 本体内に限定されます。

if (auto it = map.find(key); it != map.end()) {
    std::cout << it->second;
}

三項演算子

condition ? a : b は2つの値のうち一方を返します。単純な選択には適していますが、入れ子になったロジックには適していません。

int max = (a > b) ? a : b;
std::string msg = (n == 1) ? "item" : "items";

入れ子の三項演算子は避ける

入れ子の三項演算子は読みにくくなります。代わりに if-else を使うか、ヘルパー関数に切り出してください。

// Hard to read
auto label = (n < 0) ? "neg" : (n == 0) ? "zero" : "pos";

// Clearer
std::string label;
if (n < 0) label = "neg";
else if (n == 0) label = "zero";
else label = "pos";

switch文

1つの値を複数の定数と比較します。次の case へのフォールスルーを防ぐには、各分岐に break が必要です。

switch (day) {
    case 1: std::cout << "Mon"; break;
    case 2: std::cout << "Tue"; break;
    default: std::cout << "?";  break;
}

意図的なフォールスルー

同じコードを共有する複数の case をまとめられます。C++17 では、コンパイラー向けのマーカーとして [[fallthrough]] が追加されました。

switch (c) {
    case 'a': case 'e': case 'i': case 'o': case 'u':
        std::cout << "vowel"; break;
    default:
        std::cout << "consonant";
}

switch の制約

switch は整数型と列挙型に対してのみ機能します。文字列には if-else またはハッシュマップを使用してください。

switch 内の初期化(C++17)

if と同様に、switch のヘッダー内で変数を宣言できます。

switch (auto value = compute(); value) {
    case 0: ...
    default: ...
}

パターン:検索マップ

文字列をキーとする分岐には、if-else の連鎖よりも std::unordered_map のほうがすっきりする場合があります。

std::unordered_map<std::string, std::function<void()>> commands = {
    {"start", []{ start(); }},
    {"stop",  []{ stop();  }}
};
if (auto it = commands.find(cmd); it != commands.end())
    it->second();

理解度チェック

switch の case に break がなく、次の case が空でない場合、どうなりますか?

まとめ

一般的な分岐には if-else、短い値の選択には三項演算子、1つの値を複数の整数定数と比較する場合には switch を使用します。C++17 の初期化ステートメントにより、スコープを整理できます。

よくある質問

「分岐:if-else、三項演算子、switch-case」レッスンは無料ですか?

はい。「分岐:if-else、三項演算子、switch-case」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、C++ Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 C++ Academyコースには全4レッスンが含まれています。

「分岐:if-else、三項演算子、switch-case」で何を学びますか?

明確な分岐のために、if-elseチェーン、三項式、switch文を使い分けます。 ブラウザで直接実行するハンズオンコードでC++ Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

C++ Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのC++ Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。

「分岐:if-else、三項演算子、switch-case」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このC++ Academyレッスンでコードを書いて実行できますか?

はい。すべてのC++ Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. 分岐:if-else、三項演算子、switch-case
  2. ループのパターン:for、while、do-while
  3. コンテナでの範囲ベースforループ
  4. 早期return、break、continue、goto
← C++ Academyに戻る