C言語のおさらい 条件分岐 if文の使い方
if 文の書式
条件の真と偽により処理が二つに分岐する二分岐型をC言語で表すときは、「if 文」を使う。
書き方はこのような感じ
if(条件式) {
条件が真のときに実行する文;
}
else {
条件が偽のときに実行する文;
}
- if(条件式)の()内には、通常比較を行う式が入る。
- 条件が偽のときに実行するぶんがない場合は、else 以下を省略できる。
- 実行する文が一つしかない場合は、文のブロックの規則に従い{}を省略できる。
比較演算子
if 文などで使う条件式には、だいたい比較を行う式が使われる。
このときに、使われるのが「比較演算子」である。
比較演算子
- < ・・・左辺は右辺より小さい
- > ・・・左辺は右辺より大きい
- <= ・・・左辺は右辺以下
- >= ・・・左辺は右辺以上
- == ・・・左辺と右辺は等しい
- != ・・・左辺と右辺は等しくない
比較演算子は数学などで使っているものと意味は同じ。ただし、「≧」「≦」という記号がキーボード上にはないため、「<=」「>=」のように分解して使っている。
C言語では「=」を代入演算子の意味で使っているため「==」のように「=」を二つならべて、「等しい」という意味を表す。
if 文の使い方
実際に以下のプログラムを実行してみる。
#include <stdio.h>
int main(void) {
//変数の宣言
int x;
//入力
printf("入力された数値が10以上か判定する\n");
printf("数値を入力:");
scanf("%d", &x);
if (x >= 10) {
printf("そうです\n");
}
else {
printf("違います\n");
}
return 0;
}
実行結果がこの画面。
10という数値が入力されたので、「そうです」と表示がされる。
9とかを入力すれば「違います」と実行結果に表示されるので、試してほしい。
このプログラムのように複数の条件を入れることで、目的とする答えを導くことができる。
また、条件式の中には式を入れることもできる。
優先順位は計算式が先に優先され、その式の答えを比較することになる。
10という数値が入力されたので、「そうです」と表示がされる。
9とかを入力すれば「違います」と実行結果に表示されるので、試してほしい。
if 文のネスト構造
if 文の中にif 文が記述される構造を「ネスト(入れ子)構造」という。
ネスト構造とは、例えば「A以上B未満の数値」、「Cより上でD以下の偶数」といった感じの条件結果が欲しいときに使う。
ネスト構造にしたプログラムを実際に書いてみる。
#include <stdio.h>
int main(void) {
//変数の宣言
int x;
//入力
printf("入力された数値が5以上10未満の奇数か判定する\n");
printf("数値を入力:");
scanf("%d", &x);
if (x >= 5) {
if (x < 10) {
if (1 == x % 2) {
printf("そうです\n");
}
else {
printf("違います\n");
}
}
else {
printf("違います\n");
}
}
else {
printf("違います\n");
}
return 0;
}
このプログラムのように複数の条件を入れることで、目的とする答えを導くことができる。
また、条件式の中には式を入れることもできる。
優先順位は計算式が先に優先され、その式の答えを比較することになる。
複合条件
if 文に複数の条件式をまとめて記述することもできる。
複数の条件をまとめて一つの条件式とするには、「論理演算子」を使う。
論理演算子
- && ・・・右辺と左辺の条件を満たす。
- || ・・・右辺または左辺のどちらかの条件を満たす。
- ! ・・・条件を満たしていない。
論理演算子を使ってまとめた条件を複合条件という。
#include <stdio.h>
int main(void) {
//変数の宣言
int x;
//入力
printf("入力された数値が5以下または10以上か判定する\n");
printf("数値を入力:");
scanf("%d", &x);
if (x <= 5 || x >= 10) {
printf("そうです\n");
}
else {
printf("違います\n");
}
return 0;
}
コメント
コメントを投稿