if文はちゃんと理解していないと思わぬバグを産むことになるかも!?

if文はC言語だけでなく、派生となるC++、C#でも使われる文法です。特に条件分岐は文法こそ違えど、全てのプログラム言語において基礎中の基礎となる内容となりますので、きっちりと内容を理解しましょう。
今回は思わぬバグを産んでしまう可能性も持っているif文の罠を紹介しながら、if文、else文、else if文を学んでいきましょう。

if文と対になる文法であるelse文について

else文とは何なのか?まずは特定の変数が偶数か奇数かを判定するプログラムをif文で作ってみましょう。

サンプルコード
int suuji = 11;
if(suuji % 2 == 0)
{
    printf("suujiは偶数である\n ");
}
if(suuji % 2 != 0)
{
    printf("suujiは奇数である\n ");
}

このようになります。%は算術演算子といって余りの結果を出すものです。このプログラムではsuujiの値は11になっているので2で割った結果の余りは1になります。プログラム結果としては下記のようになります。

実行結果


プログラムの文法としては間違いではないのですが、今回の例の場合だと、もう少しスマートな書き方ができます。その際に使用するのがelse文です。試しに使ってみましょう。

int suuji = 11;
if(suuji % 2 == 0)
{
    printf("suujiは偶数である\n");
}
else
{
    printf("suujiは奇数である\n");
}

実行結果


最初のコードと今回のコードを見比べると、いくらかスッキリしています。
else文とはif文の条件に当てはまらない場合に通る処理をさせる際に使用します。
ifはもしも~~だったら、elseはそれ以外ということになります。

条件が多岐にわたる場合はelse if文を使用しよう!

else ifとはif文が行われた後に条件に当てはまらなかったら次に行われる条件判定です。
if,ifと条件文を続けても良いのでは?と思うかもしれませんが、else ifを使う上で良い所は条件が当てはまった際に他の条件文の処理をスルーしてくれます。
無駄な処理を行わせないことは想定外のバグを産まないコツになります。
サンプルコード

int suuji = 10;
if(suuji % 3 == 0)
{
    printf("suujiは3で割り切れる\n");
}
else if(suuji % 3 == 1)
{
    printf("suujiは3で割ると1余る\n");
}
else
{
    printf("suujiは3で割ると2余る\n");
}

実行結果


プログラミング的にはスマートな例題ではありませんが、if,else if,else文の内容を理解するには分かりやすいと思います。

if,else if,elseを駆使してスマートな条件分岐をしよう!

if文の使い方において、大事なのはプログラムとしてどのように処理をされるのかを理解することです。
初心者にありがちなのがif分だけを使用してしまい、思わぬバグを作りだしてしまうことやelse if,elseのプログラム的処理を中途半端に理解してしまい、想定とは違う結果にしてしまうことが見受けられます。
キッチリと理解してプログラムの基礎である条件分岐をマスターしましょう!