入れ子の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文と似た処理が実装できる。
コメント