#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専用の自動化ツールをオーダーメイドで作成しています。気になる方は こちらをご覧ください。
コメント
コメントを投稿