#5 C++で学ぶ条件分岐の基本

C++の条件分岐は、C言語系の言語に共通する標準的な書き方が基本です。この記事では、C++における条件分岐の基本と、注意すべき仕様を解説します。

if文の基本

int age = 20;
if (age >= 18) {
    std::cout << "成人です" << std::endl;
} else {
    std::cout << "未成年です" << std::endl;
}

複数の条件を順に確認する

if (age >= 65) {
    std::cout << "高齢者です" << std::endl;
} else if (age >= 18) {
    std::cout << "成人です" << std::endl;
} else {
    std::cout << "未成年です" << std::endl;
}

switch文

候補が多い場合はswitchを使います。

switch (day) {
    case 1:
        std::cout << "月曜日";
        break;
    default:
        std::cout << "その他";
}

Javaと同じく、breakを書き忘れると次のcaseまで処理が続けて実行されてしまいます。

三項演算子

簡単な条件分岐は、三項演算子で1行にまとめられます。

std::string message = age >= 18 ? "成人です" : "未成年です";

if文の中で変数を宣言する

比較的新しいC++では、if文の条件を書く前に、その場限りの変数を宣言できる書き方も使えます。

if (int result = calculate(); result > 0) {
    std::cout << "正の値です: " << result << std::endl;
}

resultという変数は、このif文(とelseブロック)の中だけで使える一時的な変数になります。

複数の条件をまとめて評価する

複数の条件を組み合わせたい場合は&&(かつ)・||(または)を使います。

if (age >= 18 && age < 65) {
    std::cout << "成人です" << std::endl;
}

C++の&&・||は「短絡評価」という性質を持ち、左側の条件だけで結果が確定する場合、右側の条件は評価されません。この性質を利用して、if (ptr != nullptr && ptr->value > 0)のように、安全確認と本来の判定を1つの条件式にまとめる書き方もよく使われます。

C++ならではの注意点

C++のif文の条件には、真偽値だけでなく数値をそのまま書くこともできます。この場合、0は「偽」、0以外の数値は「真」として扱われます。この仕様は歴史的な経緯によるもので、意図せず数値を条件に使ってしまうと、想定外の分岐をしてしまうことがあるため注意しましょう。

複数の値をまとめて判定するswitch

caseを続けて書くことで、複数の値をまとめて同じ処理に対応させられます。

switch (day) {
    case 6:
    case 7:
        std::cout << "休日です";
        break;
    default:
        std::cout << "平日です";
}

case 6:の直後に処理を書かずcase 7:を続けることで、6と7のどちらでも同じbreakまで処理が流れます。

まとめ

C++の条件分岐はif・switch・三項演算子が基本です。数値をそのまま条件として使える仕様には注意しながら、明確な比較の書き方を心がけましょう。


本ページはプロモーションを含みます。

参考書籍(PR)

C++をもっと学びたい方には「新・明解C++入門編」がおすすめです。


PR

コードを書かずに自動化したい方へ

「学んだけど自分の作業に組み込む時間がない」という方向けに、ダブルクリックで動く Windows専用の自動化ツールをオーダーメイドで作成しています。気になる方は こちらをご覧ください。

コメント

このブログの人気の投稿

#25 Rustで学ぶAI API(ChatGPT等)の呼び出し方の基本

#8 C++で学ぶ文字列操作の基本

#16 TypeScriptで学ぶ辞書型(マップ)の基本