【C言語入門】if文で条件分岐(else、AND/OR、否定、省略)

if文って使ってますか?普段の生活の中でもどちらかの選択によって行動が変わってくることってありますよね。

例えば、歩行者信号が青信号の場合は横断歩道を渡る。赤信号の場合は止まるなどです。C言語でも、条件によって処理を変えなければならない場合はよくあります。そんな場合に使用するのがif文です。

この記事では、if文について

  • if文の使い方
  • if else文で条件が複数の場合の記述方法
  • という基本的な文の構造の説明から、

  • “また”や”かつ”(OR・AND)で複数条件を処理
  • 等号・不等号(比較演算子)の使い方
  • if文とbreak文やcontinue文でループを制御

  • など、条件を判断する方法についても解説していきます。今回はif文について、使い方をわかりやすく解説します!

    if文の使い方

    if文は主に、2つの値の大小関係や、等しい・等しくないなどの条件により処理を変える場合に使われます。

    条件式が「true」の場合に{ }内の処理を行います。また、「false」の場合にはif文のブロック外に出るかもしくは「else」句の後の{ }内の処理を行います。
    以下のように記述します。

    それに対して、switch文も条件によって処理を変える場合に使われますが、switch文の場合はたくさんの条件に分かれる場合に使われます。

    例えば、サイコロの目は1から6までありますが、1から6までの出た目でそれぞれ処理が違う場合などです。if文の使い方についてサンプルコードで確認していきましょう。

    実行結果:

    if else文で条件が複数の場合の記述方法

    if else文はif文の条件以外の場合に行う処理を記述します。以下のように記述します。

    条件とは一致しないそれ以外の場合は「else」句を使用します。サンプルコードで確認しましょう。

    実行結果:

    このサンプルコードでは、西暦年数が4で割り切れる場合は「うるう年です」と、それ以外の場合は「うるう年ではありません」と表示します。

    処理が1行の場合の{}の省略

    if文の処理が1行の場合は、{ }を省略して記述することができます。先ほどのサンプルコードでも処理が1行でしたので、以下のコードのように処理を省略して記述しても問題ありません。

    実行結果:

    if文の入れ子(ネスト)の使い方

    if文の条件のなかで、さらに条件を追加したい場合があります。if文の条件のなかでさらに条件を追加することをif文の入れ子(ネスト)と言います。その記述方法についてサンプルコードで確認していきましょう。

    実行結果:

    このサンプルコードでは西暦年数でオリンピックの開催年かどうかの判断をしています。夏季オリンピック開催年でない場合でも冬季オリンピックの開催年かどうかの判断をif文の入れ子で追加しています。

    ”また”や”かつ”(OR・AND)で複数条件を処理

    if文の条件式が2つ以上ある場合についてみていきましょう。条件式が2つ以上ある場合、「OR」「AND」といった論理演算子を使います。論理演算子には次のようなモノがあります。

    論理演算子の種類書き方例説明
    ORA || BAもしくはBのどちらか一方が「true」であれば、「true」の値を返す。
    A、Bどちらとも「false」の場合のみ、「false」の値を返す。
    ANDA && BA、Bどちらとも「true」の場合のみ、「true」の値を返す。
    AもしくはBのどちらか一方が「false」であれば、「false」の値を返す。
    NOT!AAが「true」の場合「false」の値を返す。
    「false」の場合「true」の値を返す。

    それではサンプルコードで確認していきましょう。

    実行結果:

    このサンプルコードでは、西暦年数が4で割り切れるか、もしくは余りが2の場合にオリンピックの開催年かどうか判断しています。「||」記号を使って2つの条件のどちらか一方を満たすか「OR」の判定を行っています。

    次にオリンピックの開催年ではない場合の判断をするために、「!」記号を使って西暦年数が4で割り切れないかつ余りが2でないという「NOT」の判定を行っています。

    さらに「&&」記号を使って2つの条件をともに満たすか「AND」の判定を行っています。なお、「else」句のブロックでは処理は何も記述していません。これでも問題が発生することはありません。

    等号・不等号(比較演算子)の使い方

    if文の条件式で必要になってくるのが比較演算子です。比較演算子は2つの値を比較します。比較とは、どちらの値が大きいか小さいか、等しいか等しくないかなど二者を比べることです。比較演算子は以下のとおりになります。

     書き方例説明
    不等号val1 < val2va1はval2より小さい
    val1 <= val2vai1はval2以下
    val1 > val2val1はval2より大きい
    val1 >= val2val1はval2以上
    等号val1 == val2val1はval2と等しい
    val1 != val2val1はval2と等しくない

    比較が正しければ「true」の値を返し、間違っていれば「false」を返します。サンプルコードで確認していきましょう。

    オリンピックではスケートやサッカーのように競技連盟のルールにより、出場に年齢制限があります。それを例としています。なお、等号のサンプルについては、前述のオリンピック開催年かどうかの判定を参考にしてくださいね。

    実行結果:

    このサンプルコードでは、年齢制限以上の場合と年齢制限以下の場合で比較しています。なお、「等号」のサンプルコードについては前述のオリンピック開催年かどうかの判定を参考にしてくださいね。

    if文とbreak文やcontinue文でループを制御

    if文中の「break」句や「continue」句を使ってfor文のループを制御することがあります。詳しい内容についてはこちらを参考にしてくださいね。

    【C言語入門】for文の使い方(break、continue文でループ制御)
    更新日 : 2019年6月8日

    まとめ

    ここでは

  • if文・if else文の使い方
  • 論理演算子の使い方
  • 比較演算子の使い方

  • について説明しました。

    条件分けが必要な複雑な処理をするためには、if文を頻繁に使うことになるでしょう。そんなときに条件や判定が複雑になりどのように記述してよいか、わからなくなる場合もあるかもしれません。

    そんな場合はこの記事を何度も参考にして下さいね!

    LINEで送る
    Pocket

    最短でエンジニアを目指すなら侍エンジニア塾

    cta_under_bnr

    侍エンジニア塾は業界で初めてマンツーマンレッスンを始めたプログラミングスクールです。これまでの指導実績は16,000名を超え、未経験から数多くのエンジニアを輩出しています。

    あなたの目的に合わせてカリキュラムを作成し、現役エンジニア講師が専属であなたの学習をサポートするため効率よく学習を進めることができますよ。

    無理な勧誘などは一切ありません。まずは無料体験レッスンを受講ください。

    無料体験レッスンの詳細はこちら

    書いた人

    長野 透

    長野 透

    熊本在住のフリープログラマ兼ライターです。C/C++/C#、Java、Python、HTML/CSS、PHPを使ってプログラミングをしています。専門は画像処理で最近は機械学習、ディープラーニングにはまっています。幅広くやってきた経験を活かしてポイントをわかりやすくお伝えしようと思います。
    お問合せはこちらでも受け付けています。
    [email protected]

    おすすめコンテンツ

    あなたにぴったりなプログラミング学習プランを無料で診断!

    プログラミング学習の効率を劇的に上げる学習メソッドを解説