C++プログラミングにおいて、条件分岐を行うためにif文は欠かせない要素です。
本記事では、C++でのif文の基本的な使い方から応用的な使い方まで詳しく解説していきます。
if文とは
if文は、プログラムの中で条件分岐を行うために使用される制御構造の一つです。
if文を使うことで、ある条件が成立した場合には特定の処理を実行し、成立しない場合には別の処理を実行することができます。
C++では、if文は以下のような形式で記述します。
if (条件式) {
// 条件式が真(true)だった場合に実行される処理
}
例えば、変数xが10以上の場合に「xは10以上です」と表示するプログラムを作成する場合、以下のようにif文を使用します。
int x = 15;
if (x >= 10) {
std::cout << "xは10以上です" << std::endl;
}
このプログラムでは、変数xが10以上であるかどうかを判定するために、x <= 10
という条件式が用いられています。
この条件式が真(true)である場合には、「xは10以上です」というメッセージが表示されます。
if文の基本的な使い方
if文は、指定した条件が真である場合に実行する処理を指定することができます。
単純なif文
最も基本的なif文は以下のように書きます。
if (条件式) {
// 条件式が真の場合に実行される処理
}
例えば、変数xが10以上の場合に「xは10以上です」と表示するプログラムを作成する場合、以下のように書くことができます。
int x = 15;
if (x >= 10) {
cout << "xは10以上です" << endl;
}
このプログラムでは、変数xが10以上であるため、「xは10以上です」と表示されます。
if-else文
次に、複数の条件分岐を扱うためのif-else文を紹介します。以下のように書くことができます。
if (条件式1) {
// 条件式1が真の場合に実行される処理
} else {
// 条件式1が偽の場合に実行される処理
}
例えば、変数xが正か負か判定し、「正」と表示するか「負」と表示するか決めるプログラムを作成する場合、以下のように書くことができます。
int x = -5;
if (x > 0) {
cout << "正" << endl;
} else {
cout << "負" << endl;
}
このプログラムでは、変数xが負であるため、「負」と表示されます。
if-else if文
最後に、複数の条件分岐を扱うためのif-else if文を紹介します。以下のように書くことができます。
if (条件式1) {
// 条件式1が真の場合に実行される処理
} else if (条件式2) {
// 条件式2が真の場合に実行される処理
} else {
// 上記以外(全て偽)だった場合に実行される処理
}
例えば、変数xが正か負か0か判定し、「正」「負」0
それぞれ適切な文字列を表示するプログラムを作成する場合、以下のように書くことができます。
int x = 0;
if (x > 0) {
cout << "正" << endl;
} else if (x < 0) {
cout << "負" << endl;
} else {
cout << "0" << endl;
}
このプログラムでは、変数xが0であるため、0
と表示されます。
このように、条件式を指定することで、様々な条件で処理を分岐させることができます。
論理演算子を使ったif文の書き方
論理演算子を使ったif文の書き方について解説します。
論理積(&&)を使ったif文
論理積(&&
)は、2つの条件が両方とも真(true)である場合に真となります。
例えば、以下のようなコードでは、xが1以上かつ10以下である場合に「xは1以上10以下です」と表示されます。
int x = 5;
if (x >= 1 && x <= 10) {
cout << "xは1以上10以下です" << endl;
}
論理和(||)を使ったif文
論理和(||
)は、2つの条件のうちどちらか一方でも真(true)である場合に真となります。
例えば、以下のようなコードでは、xが0
または100
以上である場合に「xは0
または100
以上です」と表示されます。
int x = 50;
if (x == 0 || x >= 100) {
cout << "xは0または100以上です" << endl;
}
否定(!)を使ったif文
否定(!
)は、条件式の結果を反転させます。
例えば、以下のようなコードでは、x
が0
ではない場合に「x
は0
ではありません」と表示されます。
int x = 5;
if (!(x == 0)) {
cout << "xは0ではありません" << endl;
}
これらの論理演算子を使って、より複雑な条件式を作成することができます。ただし、条件式が長くなりすぎると可読性が悪くなってしまうため、適切に分割することが重要です。
if文のネスト
if文のネストとは、if文の中に別のif文を入れることです。これにより、複雑な条件分岐を行うことができます。
例えば、以下のようなプログラムがあったとします。
#include <iostream>
using namespace std;
int main() {
int x = 10;
int y = 5;
if (x > y) {
cout << "xはyより大きい" << endl;
} else {
cout << "xはy以下" << endl;
}
}
このプログラムでは、変数xが変数yより大きい場合、「xはyより大きい」と表示されます。
そうでなければ、「xはy以下」と表示されます。
しかし、もし変数xが変数yより大きく、かつ変数xが20以上だった場合、「xは20以上であり、かつyよりも大きい」と表示したい場合はどうすれば良いでしょうか?
この場合にif文のネストを使います。具体的には以下のように書くことができます。
#include <iostream>
using namespace std;
int main() {
int x = 25;
int y = 5;
if (x > y) {
if (x >= 20) {
cout << "xは20以上であり、かつyよりも大きい" << endl;
} else {
cout << "xは20未満であり、かつyよりも大きい" << endl;
}
} else {
cout << "xはy以下" << endl;
}
}
このプログラムでは、まず外側のif文で「変数xが変数yより大きい」かどうかを判定しています。
その後内側のif文で「変数xが20以上」かどうかを判定しています。そしてそれぞれ適切なメッセージを表示することが出来ます。
ただし、if文のネストを多用するとコードが読みづらくなってしまうため注意が必要です。
必要最低限に留めることを心掛けましょう。
if文の注意点
プログラミングにおいて、if文は非常に重要な役割を担っています。しかし、if文を書く際には注意が必要です。以下では、if文を書く際に気をつけるべき点について解説します。
if文の書き方に注意すること
まず、if文の書き方についてです。if文は基本的な制御構造の一つであり、プログラム中で頻繁に使用されます。そのため、正しい書き方を身に着けることが大切です。
例えば、以下のようなコードは正しくありません。
if (x == 1)
x = -1;
cout << "x is 1";
else
x *= 100;
cout << "x is not 1";
この場合、if文とelse文の後ろにブレース({}
)が付いていません。
{}
がつかない場合、if文の中には処理を1行しか書くことができず、上記のコードではエラーになります。
不要なコンパイルエラーを引き起こさないためにも、必ず{}
を付けるようにしましょう。
if文のネストに注意すること
次に、if文のネスト(入れ子)についてです。
複雑な処理を行う場合や条件分岐が多数ある場合は、複数のif文を入れ子状態で記述することがあります。
しかし、ネストが深くなりすぎると可読性が低下してしまいます。
そのため、適度な深さで止めるよう心掛けましょう。また、「否定」や「論理演算子」を使って条件式を単純化することも有効です。
if文の条件式に注意すること
最後に、if文の条件式(括弧内)についてです。==
や!=
、<
や>
など比較演算子を使った条件式はよく使われますが、=
(代入演算子)と間違えてしまうこともあります。
=
では変数へ値が代入されるだけですが、代入処理をif文に書いてしまうと、代入した値が0以外だと真になってしまうため、ほぼ確実にバグが発生します。
なので、==
を使用する場合は、=
の数を間違えないように注意しましょう。