分岐: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フィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- 分岐:if-else、三項演算子、switch-case
- ループのパターン:for、while、do-while
- コンテナでの範囲ベースforループ
- 早期return、break、continue、goto