if文

概要

if文は制御文のひとつで、条件によって処理を分けたい場合に使用します。
条件には比較演算子や論理演算子を使用した条件式を指定します。
書式は「真の場合のみ処理を行う」「真と偽で処理を分ける」
「条件のグループを作る」の3種類があります。

真の場合のみ処理を行う

C_0028

書式例

if (条件式) { // 条件式の結果が真のならここの処理を行う }

具体例

int month = 1; int day = 1; printf("今日は%d月%d日です\n", month, day); if (month == 1 && day == 1) { printf("Happy New Year!!!"); } 実行結果: 今日は1月1日です。 Happy New Year!!! 変数のmonthかdayの値が1以外なら Happy New Year!!!の文字は表示されません。 このように書式その1の方法はif文の条件が一致した場合のみ 特定の処理を行うことができます。

真と偽で処理を分ける

C_0029	

書式例

if (条件式) { // 条件式の結果が真の場合はこっちを通る } else { // 条件式の結果が偽の場合はこっちを通る }

具体例

int month = 11; // monthが1以上かつ12以下なら真、それ以外は偽 if (month >= 1 && month <= 12) { printf("%d月です\n", month); } else { printf("そんな月はありません\n"); } 実行結果: 11月です monthに1~12以外の値を代入した場合は条件にあてはまりませんので、 「そんな月はありません」と表示されます。 書式その2は条件にあてはまった場合と条件にあてはまらなかった場合の 2パターンの処理を行うことができます。

書式その3(条件が複数ある場合)

C_0030

書式例

if (条件1) { // 処理1 } else if (条件2) { // 処理2 } else if (条件3) { // 処理3 } else if (条件4) { // 処理4 } else { // 処理5 }

具体例

int money = 3000; printf("ソーシャルゲーム課金診断\n"); if (money <= 1000) { printf("健全です"); } else if (money <= 5000) { printf("これ以上増やさないように気をつけましょう"); } else if (money <= 50000) { printf("最低限の衣食住の金額は確保しましょう"); } else { printf("廃課金者です。ありがとう!!"); } 実行結果: ソーシャルゲーム課金診断 これ以上増やさないように気をつけましょう もし、moneyが50000以下の場合は「最低限の衣食住~」 50000より上の場合「廃課金者です。~」が表示されます。 イメージ図で書いてあるように「if ~ else if ~ else」は 上から条件判定を順番に行っていきます。 その中で一致した条件があればその条件に対応した処理を行います。 条件が一致した場合は他の「if ~ else if ~ else」の処理は 行われないので気をつけてください。

ブロック

if文やその他の制御文は条件の中で行う処理であるということを明示するために
処理の部分を「{」と「}」で囲みます。
この「{」と「}」で囲まれたまとまりをブロックといいます。
ブロックの中のソースは読みやすくするため、if文の位置からタブ一つ文字を下げます。

ブロック例

if (条件) { // ブロック始端 // 処理 } // ブロック終端

入れ子

入れ子とは制御文の中にさらに制御文を追加することです。
入れ子はネストとも呼ばれています。

書式例

if (条件) { // この条件文が入れ子 if (条件) { } }

具体例

int score = 100; if (score > 80) { if (score == 100) { printf("RankS\n"); } else { printf("RankA\n"); } } 実行結果: RankS

入れ子の注意点

入れ子を追加することでソースの可読性が落ちたり、処理が複雑になりやすいので 入れ子を増やさないようなソースを書くことを心がけたほうがいいと思います。