if 文を使うことで、複数の可能性の中からひとつ分岐を選択して、その分岐に含まれる文を実行することができます。
if 文は次のいずれかの形式をとります。
if ( /* 条件 */ ) { /* 条件が成立する場合に実行される文 */ }
もっとも簡単なケースです。条件が成立する場合に中の文を実行します。もし、条件が成立しなかった場合は何も実行しません。
if ( /* 条件 */ ) { /* 条件が成立する場合に実行される文 */ } else { /* 条件が成立しない場合に実行される文 */ }
これも基本的なケースです。前のケースと同様に条件が成立する場合に中の文を実行しますが、条件が成立しなかった場合には else の中の文を実行するようになります。このケースは、条件が成立した場合でも成立しなかった場合でも、必ず何らかの文が実行されるという点で前のケースと異なります。
if ( /* 条件 */ ) { /* 条件が成立する場合に実行される文 */ } else if ( /* 条件n */ ) { /* 条件nが成立する場合に実行される文 */ }
条件が増えたケースです。この文に遭遇すると、まず if の条件を判定します。もし、 if の条件が成立していれば中の文を実行し、この if 文を抜けます。ですが、もし if の条件が成立していなかった場合は、続けて else if の条件を判定します。 else if の条件が成立していた場合は else if の中の文を実行し、この if 文を抜けます。 else if はいくつでも追加することができますが、先頭から条件を判断していき、どれかひとつでも条件が成立していた場合は、その中の文を実行して if 文を抜けてしまう点に注意してください。このケースは、条件をひとつも満たさなかった場合は何も実行しません。
if ( /* 条件 */ ) { /* 条件が成立する場合に実行される文 */ } else if ( /* 条件n */ ) { /* 条件nが成立する場合に実行される文 */ } else { /* どの条件も成立しない場合に実行される文 */ }
基本的に前のケースと同じ意味ですが、どの条件も成立しない場合に else の中の文が実行される点が異なります。
if 文へ条件を指定するためには、式、関係演算子、論理演算子のいずれか、またはそれらの組み合わせを指定することができます。詳しくは次の記事を参照ください。
たとえば、変数 key の値が SPACE_KEY と等しいかを判定する場合は次のように書きます。
if (key == SPACE_KEY) { // key が SPACE_KEY と等しい場合にここが実行される ShotByPlayer(); }
C/C++ の if 文は、条件として式を指定することができますが、他の言語では指定できない可能性があります。たとえば Java では条件として式を指定することはできません。 C/C++ で if 文の条件に式を指定できるのは、結果が 0 になる場合を false 、結果が 0 以外になる場合を true と判断しているからです。たとえば次の if 文は問題なく動作します。
if (life) { // life が 0 でないうちはなにもしない } else { // life が 0 になったらゲームオーバー }
この形式を進んで使う必要はありませんが、他人のソースを読む際などに役立ちますので覚えておきましょう。
if 文の中に if 文を書くことができます。たとえば次の if 文は問題なく動作します。
if (player.state == ALIVE) { if (key == SPACE_KEY) { // player.state が ALIVE と等しく、 // かつ key が SPACE_KEY と等しい場合にここが実行される ShotByPlayer(); } }
Contributions