C言語で選択処理を書くには、if文を使います。if文の使い方には、次の「双岐選択(IF THEN ELSE型)」と「単岐選択(IF THEN型)」があります。
双岐選択では条件が満たしているかいないかによって異なる処理を実行するのに対し、単岐選択では条件を満たす場合のみ処理を実行します。
if文の構文規則は次のようになっています。
if(式)文(1)else文(2)
または
if(式)文(1)
if文は式に条件を書きます。もし条件を満たす場合は最初の文(1)を実行し、条件を満たさない場合はelseに続く文(2)を実行します。例として、
if (a > b) { max = a; }else { max = b; }
は双岐選択、
if (c > max) { max = c; }
は単岐選択です。
ここでC言語の文(statement)について、詳しく説明しましょう。C言語の文の構文規則は、次のようになっています。
複合文
または
式文
または
空文
または
if文
または
switch文
または
while文
または ……
最初の複合文は、文の集合を波かっこ({と})で囲んだもので、複数の文を1つの文としてまとめる働きをします。複合文はブロックとも呼ばれます。
式文は、代入式や関数呼び出し式の後ろにセミコロン(;)を付けたものです。if文において、複合文の中が1つの文の場合は波かっこを省略できるものと思えますが、正確にはCコンパイラは複合文も式文も、文として解釈しているだけなのです。
空文はセミコロン(;)だけを書きます。空文は何も処理しないことを意味します。何もないという意味なので、アセンブラのNOP命令とは異質なものです。
if文やswitch文、while文などの制御文も1つの文です。この構文規則によって、制御文の入れ子構造が可能になります。その例として、if文の中にif文を入れた場合の、課題3のプログラム(max3b.c)が以下となります。
#include <stdio.h> int main(void) { int a, b, c; printf("3つの整数を入力してください->"); scanf("%d%d%d", &a, &b, &c); if (a > b) if (c > a) printf("最大値は%dです。\n", c); else printf("最大値は%dです。\n", a); else if (c > b) printf("最大値は%dです。\n", c); else printf("最大値は%dです。\n", b); }
それでは、次回の宿題です。
Copyright © ITmedia, Inc. All Rights Reserved.