if文の書き方
プログラムは条件分岐をたくさん使って作られています。C言語では、条件分岐はif文を使って、作られます。
読み方
- if文
- いふぶん
目次
概要
C言語の if文 とは、条件分岐に利用されます。 プログラムは、たくさんの条件によって動作が分岐していきます。
if文は、
- if
- else if
- else
を使って、表現します。
if文の例
単純な if の例を紹介します。 条件式が真であれば、「処理」が実行され、そうでなければ、何も起こりません。
if (条件式) { 処理; }
例えば、以下の例では、変数 argc が 2 以上のとき、「処理」が実行されます。
if (argc >= 2) { 処理; }
条件には、関数を使うこともできます。 func が 0 以外であれば、処理が実行されます。
if (func() ) { 処理; }
条件式は、復数の条件を書くことができます。 例えば、 i が 2 で、かつ、 j が 3 のとき、といった条件を書けます。
if ( (i == 2) && (j == 3) ) { 処理; }
条件は、括弧で囲むことで、人間が読みやすくなります。 if 文は == 、&& 、||、!=、>、< などで条件を記述できますが、それらは評価の優先度があります。書き方によっては、結果的にプログラマの意図しない評価がなされることになります。人間の読み良すさと、予期せぬ評価がなされないために、if の括弧の中の式にも括弧をつけることをお勧めします。
if文はブレースで囲むことが好まれる
if文は、ブレース( {, } ) で囲まれることを好まれます。 例えば、if文は、以下のようにブレースを省略できます。 たとえば、if文単体では、このようになります。
if (条件式) 処理;
if, else if, else だと以下のようになります。
if (条件式1) 処理1; else if (条件式2) 処理2; else 処理3;
しかしながら、
if (条件式) 処理;
は、
if (条件式) { 処理; }
と書くことを好まれます。
一説によれば、処理をあとから追加したくなったときに、以下のように書いてしまったとします。
if (条件式) 処理1; 処理2;
しかしながら、上記のコードは
if (条件式) { 処理1; } 処理2;
ということであり、条件式に依存せず、必ず、処理2が実行されます。
あとからコードを追加したときに、プログラムが想定外の動作をさせないために、安全のためにブレースをつけることが望ましいとされています。
しかしながら、これらは、コードの規約に依存することです。 コードの規約が、ブレースなしの省略を許している場合においては、ブレースをつけなくても良いでしょう。 規約がまだない、もしくは、規約をあなたが決められるのであれば、ブレースをつけて書くことをお勧めします。
ifとelseの例
条件式が真であれば、処理1を実行します。条件式が偽であれば、処理2が実行されます。
if (条件式) { 処理1; } else { 処理2; }
ifとelse ifの例
条件式1が真であれば、処理1を実行します。条件式1が偽で、条件式2が真であれば、処理2が実行されます。
if (条件式1) { 処理1; } else if (条件式2) { 処理2; }
ifとelse ifとelseの例
条件式1が真であれば、処理1を実行します。条件式1が偽で、条件式2が真であれば、処理2が実行されます。 条件式1が偽で、条件式2が偽で、処理3が実行されます。
if (条件式1) { 処理1; } else if (条件式2) { 処理2; } else { 処理3; }
if文は入れ子にできる
if文は、if文を入れ子にすることができます。 if (条件式1) { 処理1; if (条件式2) { 処理2; } }
三項演算子
if文の省略形として、三項演算子 と呼ばれるものがあります。 例えば、以下のコードは、
char *s; if (flag) { s = "OK"; } else { s = "NG"; }
三項演算子によって、
char *s = flag ? "OK" : "NG";
と簡単に書くことができます。
関連項目
ツイート