4-2 if文の続き

この記事は約3分で読めます。

入れ子のif文

if文で複数の条件を指定したいときは、複数のif文を入れ子構造にすることで実現できます。

#include <stdio.h>
int main(void){
	int a;
	puts("数字を入力してください。");
	scanf("%d",&a);
	if (a>=10){
		puts("aは10以上");
		if (a<=20){
			puts("aは20以下");
		}
	}
	return 0;
}

実行結果

数字を入力してください。
15
aは10以上
aは20以下

aが10以上のときif (a<=20)が実行されます。そのとき、aが20以下のときputs(“aは20以下”);が実行されます。つまりaが10以上かつ20以下の時”aは20以下”と表示されます。

AND OR 演算子

複数の条件を使うたびにif文を入れ子にしていると読みにくくなってしまうので、一つにまとめる方法が用意されています。&&は論理積を表し、||は論理和を表す演算子です。

A&&B Aが真かつBが真のとき真、それ以外の時は偽

A||B Aが真またはBが真のとき真、それ以外の時は偽

#include <stdio.h>
int main(void){
	int a;
	puts("数字を入力してください。");
	scanf("%d",&a);
	if (10<=a&&a<=20) puts("aは10以上かつ20以下");
	if (a<=10||20<=a) puts("aは10以下または20以上");
	return 0;
}

実行結果1

数字を入力してください。
15
aは10以上かつ20以下

実行結果2

数字を入力してください。
8
aは10以下または20以上

条件演算子

C言語にはif文と同等の機能を持つ演算子が用意されています。それが条件演算子です。

式?文1:文2

式を評価して真ならば文1、偽ならば文2が実行されます。ちなみに、条件演算子はC言語で唯一の3項演算子です。

#include <stdio.h>
int main(void){
	int a;
	puts("11から20までの数字を入力してください。");
	scanf("%d",&a);
	printf("一の位で四捨五入します。\n%d\n",a<15?10:20);
	return 0;
}

実行結果

11から20までの数字を入力してください。
17
一の位で四捨五入します。
20

6行目について、a=17のときはa<15は偽なので20が表示されます。

まとめ

if文は、入れ子にすることができる。つまり、if文の中及びelseブロックの中に別のif文を記述できる。

&&は「かつ」を、||は「または」を表す演算子である。

条件演算子を使うと、if文と似た処理が実装できる。

コメント

タイトルとURLをコピーしました