条件式(関係演算子、論理演算子を用いる)を判断し、2分岐選択制御を行います。
パターン | 書き方 | フローチャート | 例 |
---|---|---|---|
基本形 |
if (条件式) 文1; else 文2; ↑ タブで字下げ |
条件式が 真なら文1 を実行 偽なら文2 を実行 |
if ( a > 10 ) a = 0; else a++; |
else節の省略型 |
if (条件式) 文1; |
条件式が真なら文1 を実行 |
if ( a == 0 ) a = 2; |
複合文の形式
({}で囲んだ文の集合を複合文と呼ぶ) ※ 複合文の else節 も省略できる |
if (条件式) { 文11; 文12; } else { 文21; 文22; } ※ 複数行の文は {} で囲んで 複合文にする |
条件式が 真なら文11 と文12 を実行 偽なら文21 と文22 を実行 |
if ( a < 10 ){ a = 1; b = 2; } else { a = 3; b = 4; } |
2つの値の大小関係を比較し、真のときには1を、偽のときには0を生成します。
演算子 | 意味 | 使用例 |
---|---|---|
> | より大きい | if (a > b) |
>= | より大きいか、等しい (以上) | if (a >= b) |
< | より小さい | if (a < b) |
<= | より小さいか、等しい (以下) | if (a <= b) |
== | 等しい | if (a == b) (注1) |
!= | 等しくない | if (a != b) |
論理演算子を用いると、複数の条件を組み合せることができます。
演算子 | 意味 | 使用例 |
---|---|---|
&& | 論理積(かつ) | if (a > 0 && b > 0) |
|| | 論理和(または) | if (a > 0 || b > 0) |
! | 否定(でない) | if (!a) (注2) |
条件式を判断して多分岐選択制御を行います。
(形式)if (条件1) { 文1; } else if (条件2) { 文2; } | | else if (条件n) { 文n; } else { 文; }
|
(フローチャート)条件1 が真ならば文1 を実行 そうではなく、 条件2 が真ならば文2 を実行 そうではなく、 条件n が真ならば文n を実行 いずれでもないならば文を実行 |
(例)if (a > 1000) printf("a は 1000 より大きい\n"); else if (a > 500) printf("a は 1000以下で500より大きい\n"); else if (a > 100) printf("a は 500以下で100より大きい\n"); else printf("a は 100以下\n"); |
if文の中にまた if文が入る形です。
(形式)if (条件1) { if (条件2) { 文1; } else { 文2; } } else { 文3; }
|
(フローチャート)条件1 が真で 条件2 が真ならば、文1 を実行 条件2 が偽ならば、文2 を実行 条件1 が偽ならば、文3 を実行 |
(例)if (a > 10) if (b == 1) a = 0; else a = 1; else a++; |
(注1) if (a == b) を if (a = b) と間違えて記述すると、思わぬエラーの原因になります。 仮に、 int a = 0; if (a == 0) printf("a は 0 と等しい\n"); else printf("a は 0 と等しくない\n"); というプログラムで、if (a = 0) と記述したとすると、コンパイルはエラーとはならず、 表示結果は「a は 0 と等しくない」になってしまうのです。 C言語において ≠0 : 真 =0 : 偽 という決まりがあります。 つまり、 if (0) は 「偽」の判定になります。 if (a == 0) を if (a = 0) と記述すると、 a = 0 の代入文が働き、a は 0 になってしまいます。 つまり、 if (0) になり、判定結果は「偽」になるため、 「a は 0 と等しくない」と表示するようになるのです。 (注2) !aは、a==0と同じ意味になります。 C言語では、0以外の値は真、0は偽ですから、慣れたプログラマは、if(a!=0) を if(a) と 記述します。一方、if(a==0)の方はif(!a)と記述します。この表記に出くわしたとき に戸惑わないようにしてください。
「初心者のためのポイント学習C言語」 Copyright(c) 2000-2004 TOMOJI All Rights Reserved