条件分岐構文は、C言語に限らず他のプログラム言語でも必ずある構文です。
C言語の条件分岐構文は、if文、else if文、else文とswitch文があります。
それでは、C言語の条件分岐構文について解説していきます。
1.条件分岐とは
条件分岐とは、計算結果などの変数値や列挙型(enum)のラベルなどによって、
処理を分岐することを言います。
例えば、変数aという値が0以上の場合と負の値の場合で処理を分けたい時などに使用します。
列挙型(enum)については、switch文と合わせて解説します。
2.条件分岐構文のif文の使い方
if文の基本形は、以下のように書きます。
if ( 条件式 )
{
処理内容
}
条件式が真の場合(成立した場合)に、if文の処理内容を実行します。
if文の処理の中に、更にif文を入れていくこともできます。
また、if文と合わせて、else if文、else文も良く使用します。
if文とelse文を使用する場合は、下記のように書きます。
if ( 条件式1 )
{
処理内容1
}
else
{
処理内容2
}
else文は、if文の条件以外はエラー処理をしたい時に良く使用します。
また、else文が必要無ければ、if文のみでも構いません。
次に、else if文を使用する場合は、下記のように書きます。
if ( 条件式1 )
{
処理内容1
}
else if ( 条件式2 )
{
処理内容2
}
else
{
処理内容3
}
else if文は、複数の処理内容を分岐させたい場合に使用し、if文の後に繋げていくことで処理を分けることができます。
else if文は、if文の後に何個でも書くことができますが、プログラムの可読性が悪くならない程度に使用すると良いです。
else if文を使用する場合は、else文でエラー処理をする等、if/else if文以外の処理を明確にしておいた方が良いです。
3.if文のプログラム例
if文やelse if文、else文を使用したプログラム例は、下記のような感じです。
#include <stdio.h>
int tashizan( int a, int b ) {
return a+b;
}
void main (){
int ret = 0;
int first,second = 0;
first = 230;
second = 132;
ret = tashizan(first,second);
if ( ret%2 == 0 ) {
printf("%d は、偶数です。\n", ret);
}
else {
printf("%d は、奇数です。\n", ret);
}
if( ret%34 == 0 ) {
printf("%d は、34で割り切れます。\n", ret);
}
else if( ret%58 ) {
printf("%d は、58で割り切れます。\n", ret);
}
else {
printf("%d は、34と58で割り切れません。\n", ret);
}
return;
}
4.条件分岐構文のswitch文の使い方
数式の条件ではなく、ラベルの値によって処理を分けたい場合には、switch文を使用します。
switch文の基本形は、caseとdefaultで構成されており、下記のような感じになります。
switch ( 値または式 ) {
case 値1:
( 処理1 )
break;
case 値2:
( 処理2 )
break;
case 値3:
( 処理3 )
break:
default:
( エラー処理等 )
break;
}
switch文の( )内の値と同じ値のcaseの処理が実行されます。
caseの処理の最後には、必ずbreakを入れてswitch文の処理を終了します。
このbreakが無いと、無関係な次のcaseの処理も実行されてしまい意図したプログラムになりません。
ただ、caseの値が異なっても全く同じ処理をしたい場合は、下記のように書くこともできます。
switch ( 値または式 ) {
case 値1:
( 処理1 )
break;
case 値2:
case 値3:
( 処理2 )
break:
default:
( エラー処理等 )
break;
}
上記のように、「case 値2:」と「 case 値3:」を続けて記述することで、どちらのcaseも処理2が実行されるようになります。
また、caseに当てはまらなかった場合は、defaultに処理を記述します。
ほとんどの場合、defaultでは、エラー処理を行います。そしてcaseと同じようにbreakを入れます。
5.switch文のプログラム例
switch文を使用する場合、併せて列挙型のenumと合わせてよく使用します。
そのプログラム例は、下記のような感じです。
#include <stdio.h>
enum amari {
zero=0,
one,
two,
three,
fore
};
int kakezan( int a, int b )
{
return a*b;
}
void main ()
{
int ret = 0;
int first,second=0;
first = 23;
second = 39;
ret = kakezan(first,second);
switch ( ret%5 ) {
case zero:
printf("%dを5で割ると、余りは0です。\n", ret);
break;
case one:
printf("%dを5で割ると、余りは1です。\n", ret);
break;
case two:
printf("%dを5で割ると、余りは2です。\n", ret);
break;
case three:
printf("%dを5で割ると、余りは3です。\n", ret);
break;
case fore:
printf("%dを5で割ると、余りは4です。\n", ret);
break;
default:
printf("エラー:%dは異常値です。\n", ret);
break;
}
return;
}
6.最後に
条件分岐の考え方は難しくありませんが、どのように分岐させると効率が良いかということが重要になります。
分岐条件をよく検討せずにプログラミングするとelse ifの羅列が多くなる場合があり、ソースコードが読みにくくなります。
プログラミングは、動作させることも重要ですが、効率よく読みやすくを心掛けると良いです。
<関連・おすすめ記事>
Linux勉強用の中古パソコンおすすめショップランキング - 水瓶座列車
C言語の始め方と基本構造、コンパイルから実行までを解説 - 水瓶座列車
C言語の繰り返し構文( while, do while, for )の解説と応用 - 水瓶座列車