この章では、計算や比較、条件によって処理を分岐させる書き方を確認します。C言語で学んだ基本はそのまま使えますが、C++ならではの表現のしやすさにも注目していきましょう。
#include <iostream>
using namespace std;
int main() {
int a = 10;
int b = 3;
cout << "a + b = " << a + b << endl;
cout << "a - b = " << a - b << endl;
cout << "a * b = " << a * b << endl;
cout << "a / b = " << a / b << endl;
cout << "a % b = " << a % b << endl;
return 0;
}
+, -, *, /, % など、基本的な計算はC言語と同様/ は整数同士だと小数点以下は切り捨てられる(10 / 3 = 3)% は余り(10 % 3 = 1)#include <iostream>
using namespace std;
int main() {
int score = 75;
if (score >= 60) {
cout << "合格" << endl;
} else {
cout << "不合格" << endl;
}
return 0;
}
>=, <=, ==, != などの比較演算子で条件判定if 文で結果によって処理を分けるif 文の文法自体は C 言語と同じです。bool 型(true/false) が正式に用意されており、意味の分かりやすい真偽値を使った条件判定が書けます。bool isPassed = true;
if (isPassed) {
cout << "合格です。" << endl;
}
このように、C++ では 意図が明確に伝わる条件式 が書きやすくなっています。
#include <iostream>
using namespace std;
int main() {
bool isLoggedIn = false;
if (isLoggedIn) {
cout << "ようこそ" << endl;
} else {
cout << "ログインしてください" << endl;
}
return 0;
}
bool 型の変数をそのまま if 文の条件に使えるtrue / false を明示できるため、意味が分かりやすい#include <iostream>
using namespace std;
int main() {
int score = 85;
if (score >= 80) {
cout << "優" << endl;
} else if (score >= 60) {
cout << "良" << endl;
} else {
cout << "不可" << endl;
}
return 0;
}
// calc.cpp
#include <iostream>
using namespace std;
int main() {
int a, b;
cout << "2つの整数を入力してください:";
cin >> a >> b;
cout << "a + b = " << a + b << endl;
cout << "a - b = " << a - b << endl;
cout << "a * b = " << a * b << endl;
cout << "a / b = " << a / b << endl;
cout << "a % b = " << a % b << endl;
if (a > b) {
cout << "a の方が大きい" << endl;
} else if (a < b) {
cout << "b の方が大きい" << endl;
} else {
cout << "同じ値" << endl;
}
return 0;
}
bool isPassed = (score >= 60); を宣言し、boolalpha を使って合否を表示するelse if を複数並べることで多段分岐ができます。次のコードの出力はどれか。
#include <iostream>
using namespace std;
int main() {
int x = 5;
if (x % 2 == 0) {
cout << "偶数" << endl;
} else {
cout << "奇数" << endl;
}
return 0;
}
x % 2 == 0 は false となり、「奇数」と表示されます。
次のコードの出力はどれか。
#include <iostream>
using namespace std;
int main() {
int score = 85;
if (score >= 80) {
cout << "優" << endl;
} else if (score >= 60) {
cout << "良" << endl;
} else {
cout << "不可" << endl;
}
return 0;
}
score >= 80 が true となり、「優」と表示されます。else if 以降は評価されません。
次のコードの出力はどれか。
#include <iostream>
using namespace std;
int main() {
bool isMember = true;
if (isMember) {
cout << "会員価格が適用されます。" << endl;
} else {
cout << "通常価格です。" << endl;
}
return 0;
}
isMember が true なので if ブロックが実行され、「会員価格が適用されます。」と表示されます。
int a = 10, b = 3; のとき、cout << a / b << endl; の出力はどれか。
double 型を使うか、(double)a / b のようにキャストが必要です。
if 文で結果によって処理を分けられるbool 型をそのまま条件として使える(C++ならではの明確な表現)