C言語の条件文:if文、else文、ネストされたif文(例付き)
⚡ スマートサマリー
C言語の条件文は、テストされた条件が真と評価された場合にのみコードブロックを実行することでプログラムの流れを制御し、if、if-else、ネストされた、else-ifなどのラダー構造による意思決定を可能にします。

C の条件文とは何ですか?
C言語における条件文は、条件に基づいて判断を行うために使用されます。条件文は、条件が指定されていない場合は順次実行されます。文のブロックに条件を指定すると、条件によって評価された結果に基づいて実行フローが変化する場合があります。このプロセスをC言語では意思決定と呼びます。
取消 C言語のループ 繰り返しコードの場合、条件文は1つのパスを選択します。
「C」プログラミングでは、次の 2 つの構成要素を利用して条件文を作成できます。
- Ifステートメント
- if-else文
評価された条件の結果に基づいてプログラムがどのステートメントを実行するかを決定するため、これは分岐とも呼ばれます。
Ifステートメント
これは強力な条件文の XNUMX つです。 If ステートメントは、プログラムの実行フローを変更する役割を果たします。 If ステートメントは常に条件とともに使用されます。 If の本体内のステートメントを実行する前に、条件が最初に評価されます。 if ステートメントの構文は次のとおりです。
if (condition)
instruction;
条件は true または false に評価されます。 True は常にゼロ以外の値、False はゼロを含む値です。 命令には、単一の命令、または中括弧 { } で囲まれたコード ブロックを指定できます。
次のプログラムは、C プログラミングにおける if 構文の使用法を示しています。
#include<stdio.h> int main() { int num1=1; int num2=2; if(num1<num2) //test-condition { printf("num1 is smaller than num2"); } return 0; }
出力:
num1 is smaller than num2
上記のプログラムは、if 構文を使用して 2 つの数値が等しいかどうかを確認する方法を示しています。
- 上記のプログラムでは、1 つの変数を num2、num1 の値でそれぞれ 2、XNUMX に初期化しました。
- 次に、if をテスト式で使用して、どの数値が最小で、どの数値が最大であるかを確認しました。 if 構文で関係式を使用しました。 num1 の値が num2 より小さいため、条件は true と評価されます。
- したがって、If のブロック内のステートメントを出力します。 その後、制御はブロックの外に出て、プログラムは成功して終了します。
リレーショナル Operaトー
C言語には、決定を下したり条件をテストしたりするためのブール式を作成するために使用できる6つの関係演算子があり、真または偽を返します。
<- 未満<=— 以下>— より大きい>=— 以上==— 等しい!=— 等しくない
等価テスト (==) は代入演算子 (=) とは異なることに注意してください。これは、プログラマがこれらを混同することによって直面する最も一般的な問題の 1 つだからです。
具体的な例を挙げますと、以下の通りです。
int x = 41; x =x+ 1; if (x == 42) { printf("You succeed!");}
出力:
You succeed
ゼロ以外の値に評価される条件は true とみなされます。
具体的な例を挙げますと、以下の通りです。
int present = 1; if (present) printf("There is someone present in the classroom \n");
出力:
There is someone present in the classroom
If-Else ステートメント
if-else文はif文の拡張版です。if-else文の一般的な形式は次のとおりです。
if (test-expression)
{
True block of statements
}
Else
{
False block of statements
}
Statements;
このタイプの構文では、テスト式の値が真であれば、真に対応するステートメントブロックが実行されます。テスト式の値が偽であれば、偽に対応するステートメントブロックが実行されます。いずれの場合も、実行後、制御は自動的にIfブロックの外側にあるステートメントに移ります。
次のプログラムは、if-else 構造の使用方法を示しています。
変数を何らかの値で初期化し、その値が XNUMX より小さいか XNUMX より大きいかを判断するプログラムを作成します。
始めましょう。
#include<stdio.h> int main() { int num=19; if(num<10) { printf("The value is less than 10"); } else { printf("The value is greater than 10"); } return 0; }
出力:
The value is greater than 10
- 変数を値 19 で初期化しました。「C」プログラムを使用して、数値が 10 より大きいか小さいかを調べる必要があります。 これを行うために、if-else 構造を使用しました。
- ここでは、値を 10 と比較する必要があるため、条件 num<10 を指定しました。
- ご覧のとおり、最初のブロックは常に true ブロックです。つまり、test-expression の値が true の場合、最初のブロック (If) が実行されます。
- 10 番目のブロックは else ブロックです。 このブロックには、テスト式の値が false になった場合に実行されるステートメントが含まれています。 私たちのプログラムでは、num の値が XNUMX より大きいため、テスト条件が false になり、else ブロックが実行されます。 したがって、出力は else ブロックからの「値は XNUMX より大きい」になります。 if-else の後、プログラムは成功した結果で終了します。
「C」プログラミングでは、if-else ステートメントのネストと呼ばれる複数の if-else 構造を相互に使用できます。
条件式
if-else文を表現する別の方法として、?:演算子を導入する方法があります。条件式において、?:演算子はifとelseに関連付けられた単一の文のみを持ちます。
具体的な例を挙げますと、以下の通りです。
#include <stdio.h> int main() { int y; int x = 2; y = (x >= 6) ? 6 : x;/* This is equivalent to: if (x >= 5) y = 5; else y = x; */ printf("y =%d ",y); return 0;}
出力:
y =2
ネストされた if-else ステートメント
一連の決定が必要な場合は、ネストされた if-else が使用されます。 ネストとは、ある if-else 構造を別の if-else 構造内で使用することを意味します。
ネストされた if-else の使用法を示すプログラムを作成してみましょう。
#include<stdio.h> int main() { int num=1; if(num<10) { if(num==1) { printf("The value is:%d\n",num); } else { printf("The value is greater than 1"); } } else { printf("The value is greater than 10"); } return 0; }
出力:
The value is:1
上記のプログラムは、数値が 10 より小さいか大きいかをチェックし、ネストされた if-else 構造を使用して結果を出力します。
- まず、値が 1 の変数 num を宣言しました。次に、if-else 構造を使用しました。
- 外側のif-else文では、指定された条件によって数値が10未満かどうかがチェックされます。条件が真の場合にのみ、内側のブロックが実行されます。この場合、条件は真であるため、内側のブロックが処理されます。
- 内側のブロックでは、変数に値1が含まれているかどうかをチェックする条件が再びあります。条件が真の場合、Ifブロックが実行され、そうでない場合はelseブロックが実行されます。この場合、条件は真であるため、Ifブロックが実行され、値が出力画面に表示されます。
- 上記のプログラムは、変数の値を表示して正常に終了します。
値を変更してみてください 変数 プログラムの動作を確認してください。
注:ネストされたif-else文では、複数のif-else構造が関与するため、インデントに注意する必要があります。個々の構造を把握するのが難しくなるためです。適切なインデントを行うことで、プログラムの可読性が向上します。
ネストされた Else-if ステートメント
ネストされた else-if は、マルチパスの決定が必要な場合に使用されます。
「C」プログラミングで else-if ラダーを構築する方法の一般的な構文は次のとおりです。
if (test - expression 1) { statement1; } else if (test - expression 2) { Statement2; } else if (test - expression 3) { Statement3; } else if (test - expression n) { Statement n; } else { default; } Statement x;
このタイプの構造はelse-ifラダーと呼ばれます。この連鎖は一般的に梯子のように見えるため、else-ifラダーとも呼ばれます。テスト式は上から下へ評価されます。テスト式が真になると、それに関連付けられたステートメントが実行されます。n個のテスト式すべてが偽になると、デフォルトのelseステートメントが実行されます。
プログラムを使って実際に動作する様子を見てみましょう。
#include<stdio.h> int main() { int marks=83; if(marks>75){ printf("First class"); } else if(marks>65){ printf("Second class"); } else if(marks>55){ printf("Third class"); } else{ printf("Fourth class"); } return 0; }
出力:
First class
上記のプログラムは、テストの得点に従って成績を出力します。 上記のプログラムではelse-ifラダー構造を使用しました。
- 変数をマークで初期化しました。 else-if ラダー構造では、さまざまな条件を提供します。
- 変数マークの値は、それに関連付けられたステートメントが出力画面に表示されるため、最初の条件と比較されます。
- 最初のテスト条件が false であることが判明した場合は、XNUMX 番目の条件と比較されます。
- この処理は、すべての式が評価されるまで続きます。そうでない場合は、else-if ループから制御が外れ、default ステートメントが出力されます。
値を変更してみて、出力の変化に注目してください。





