6−1.if文

(1)基本的な if文

条件式(関係演算子論理演算子を用いる)を判断し、2分岐選択制御を行います。

【1. if文のパターン】

パターン書き方フローチャート
基本形
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. 関係演算子】

2つの値の大小関係を比較し、真のときには1を、偽のときには0を生成します。

【関係演算子】
演算子意味使用例
>より大きいif (a > b)
>=より大きいか、等しい
(以上)
if (a >= b)
<より小さいif (a < b)
<=より小さいか、等しい
(以下)
if (a <= b)
==等しいif (a == b) 
注1
!=等しくないif (a != b)

【3. 論理演算子】

論理演算子を用いると、複数の条件を組み合せることができます。

【論理演算子】
演算子意味使用例
&&論理積(かつ)if (a > 0 && b > 0)
||論理和(または)if (a > 0 || b > 0)
!否定(でない)if (!a) (注2
サンプル 演習

(2)else if

条件式を判断して多分岐選択制御を行います。

(形式)
if (条件1) {
	文1;
}
else if (条件2) {
	文2;
}
	|
	|
else if (条件n) {
	文n;
}
else {
	文;
}
  • 文1〜文n、及び文は複合文

    ({ }で囲んだ文)でも可。

  • 複数行の文の場合には { } が必要。

    単文の場合には { } は省略可能。

(フローチャート)

条件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");
演習

(2)if文の入れ子(ネスト)

if文の中にまた if文が入る形です。

(形式)
if (条件1) {
	if (条件2) {
		文1;
	}
	else {
		文2;
	}
}
else {
	文3;
}
  • { } の数と位置に注意
  • インデント(字下げ)で見やすく
  • 文1 〜文3 は複合文でも可。
  • 複数行の文の場合には { } で囲み複合文に。

    単文の場合には { } は省略可能。

  • これ以外にも様々なパターンで if文は入れ子が可能。
(フローチャート)

条件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)と記述します。この表記に出くわしたとき
に戸惑わないようにしてください。
◆◆前ページ  ▲TOP▲  次ページ◆◆

banner
「初心者のためのポイント学習C言語」
Copyright(c) 2000-2004 TOMOJI All Rights Reserved