ifは条件に従って実行するステートメントを変えます。
条件に応じて、あるステートメントを実行したり、あるいは、特定の条件のときにあるステートメントを実行しないようにしたいときがあります。
そのようなときに使う代表的な制御文がifステートメントです。
ifステートメントの書式は次のとおりです。
if (expr)
statement1;
else
statement2;
exprは条件式で、この式の値が真(true)であるとき、statement1が実行されます。 statement2は条件式が偽(false)のときに実行されます。Cでは、条件式exprを必ず(と)で囲むことに注意してください。
なお、条件式で、値が同じかどうかを演算子で調べるときには、==演算子(イコール2個、等値の場合)を使います。
次の例のように、比較のつもりで=(イコール1個)を使うと、実際には代入になり(dateが1になり)、 常に条件式が真であるとみなされ、常に「月はじめです。」と出力されてしまいます。
if (date = 1)
printf("("月はじめです。");
複数のif...elseステートメントを使って、ネストしたif...else構造を作ることもできます。
if (expr)
statement1;
else if (condition2)
statement2;
else if (condition3)
statement3;
...
else
statementN;
この場合、最初のifの条件式が偽であるときに、第2のifステートメントが評価されます。
次の例は、ネストしたif...else構造を使った例です。
int date = 26; /* 日付 */
printf("今日は、%d日です。date);
if (date == 1)
printf("今月のスケジュールを確認してください。");
else
if (date > 28)
printf("来月のスケジュールはできていますか?");
else
if (date > 20)
printf("来月のスケジュールを立てましょう。");
実行結果は次のようになります。
今日は、26日です。
来月のスケジュールを立てましょう。
この場合、日付が1日なら「今月のスケジュールを確認してください。」と出力し、 日付が21日~28日なら「来月のスケジュールを立てましょう。」と出力し、日付が29日以降なら「来月のスケジュールはできていますか?」と出力します。