C言語 | フロー制御 | if文

if 文は、条件に応じて実行するコードを選択する。

プログラムの分岐

if 文は、条件が真の場合だけ文を実行する。

if (条件) 

C言語では、0を偽、0以外を真として扱う。

コード1

#include <stdio.h>

int main() {
 int iBool;
 printf("0または別の値を入力してください。 >");
 scanf("%d" , &iBool);

 if (iBool) printf("真が入力されました。\n");
 if (!iBool) printf("偽が入力されました。\n");
 return 0;
}

条件が偽の場合に別の文を実行するには else を使う。

if (条件) 1
else 2

コード2

#include <stdio.h>

int main() {
 int iBool;
 printf("0または別の値を入力してください。 >");
 scanf("%d" , &iBool);

 if (iBool) printf("真が入力されました。\n");
 else printf("偽が入力されました。\n");
 return 0;
}

複数の選択肢を判定するには else if を連結する。

コード3

#include <stdio.h>

int main() {
 char chVar;
 printf("C言語が好きですか? Y/N>");
 scanf(" %c" , &chVar);

 if (chVar == 'Y' || chVar == 'y')
   printf("そのまま学習を続けましょう。\n");
 else if (chVar == 'N' || chVar == 'n')
   printf("それでも続けてみましょう。\n");
 else
   printf("入力が正しくありません。\n");
 return 0;
}

複合文

ifelse が制御する文は1つである。複数の文をまとめて実行するには、ブロックとも呼ばれる複合文を使う。

{
 1
 2
}

入れ子になったブロックは一貫してインデントし、構造を読みやすくする。

コード4

#include <stdio.h>

int main() {
 int iBool;
 printf("0または別の値を入力してください。 >");
 scanf("%d" , &iBool);

 if (iBool) {
   printf("真が入力されました。\n");
   return 1;
 }
 else {
   printf("偽が入力されました。\n");
   return 0;
 }
}