この章では、整数、小数、文字、真偽値、文字列といった基本的なデータ型と、変数を使ってプログラムに値を保持する方法を学びます。また、C++の << 演算子が型ごとに適切に処理を変える仕組みにも触れていきます。
| 型名 | 説明 | 例 |
|---|---|---|
int |
整数 | 10, -5, 0 |
double |
実数(小数) | 3.14, -0.5 |
char |
1文字 | 'A', 'z' |
bool |
真偽値(true/false) | true, false |
string |
文字列 | "Hello", "C++" |
※ string 型を使うには <string> をインクルードする必要があります。
#include <iostream>
#include <string>
using namespace std;
int main() {
int score = 90;
double rate = 0.85;
char grade = 'A';
bool isPassed = true;
string name = "Tanaka";
cout << "名前: " << name << endl;
cout << "スコア: " << score << endl;
cout << "レート: " << rate << endl;
cout << "評価: " << grade << endl;
cout << "合格か?: " << isPassed << endl;
return 0;
}
cout << で 型を意識せず一貫した書き方で出力できる のがC++の特徴です。上の例では、各変数を 宣言すると同時に値を入れて(初期化して) います。C++ではこれが基本のスタイルです。ポイントは2つです。
// ◎ おすすめ:使う直前に、初期値つきで宣言する int score = 90; string name = "Tanaka"; // △ 避けたい:先に宣言だけして、あとで代入する int score; // この時点では中身が未定(未初期化) // ...いろいろな処理... score = 90; // ずっと後で値を入れる
C++では、演算子 << や >> の振る舞いを、扱う型ごとに切り替える機能があります。これを「演算子オーバーロード」と呼びます。
cout << int型 は整数を表示cout << double型 は小数を表示cout << string型 は文字列を表示これにより、型ごとに特別な処理を意識せずに、同じ書き方で出力できます。
#include <iostream>
using namespace std;
int main() {
bool isClear = true;
cout << isClear << endl; // 数値として表示(1)
cout << boolalpha << isClear << endl; // 文字として表示(true)
return 0;
}
boolalpha を指定すると "true" や "false" と文字で表示されます。noboolalpha を使います。boolalpha は マニピュレータ(Manipulator) と呼ばれる機能の一つです。マニピュレータとは、cout などの出力の設定を変更する仕組みです。
cout << boolalpha << true << ", " << false << endl; // true, false cout << noboolalpha << true << ", " << false << endl; // 1, 0
fixed や setprecision など、表示形式を変えるマニピュレータがあります。
// types.cpp
#include <iostream>
#include <string>
using namespace std;
int main() {
int age = 25;
double height = 170.5;
char initial = 'T';
bool isMember = true;
string name = "Tanaka";
cout << "名前: " << name << endl;
cout << "年齢: " << age << endl;
cout << "身長: " << height << endl;
cout << "イニシャル: " << initial << endl;
cout << "会員: " << boolalpha << isMember << endl;
return 0;
}
int score)を追加し、「100点中 XX点」と表示するbool isGood = true、未満なら false に設定し、boolalpha を使って表示するdouble 型の体重(weight)も追加して表示するbool isGood = (score >= 80); のように比較演算子の結果を直接 bool 変数に代入できます。boolalpha は一度指定すると以降全ての bool 出力に影響します。
次のコードを実行した場合の出力として正しいものはどれか。
#include <iostream>
#include <string>
using namespace std;
int main() {
int age = 25;
string name = "Sato";
bool isMember = false;
cout << "名前: " << name << endl;
cout << "年齢: " << age << endl;
cout << "会員ですか?: " << isMember << endl;
return 0;
}
boolalpha を使っていないため、false は 0 として表示されます。boolalpha を使うと "false" と表示されます。
double rate = 0.85; と宣言した後、cout << rate << endl; の出力はどれか。
double 型の変数はそのまま小数値が出力されます。cout の演算子オーバーロードにより、型に合った出力が自動的に行われます。
次のコードを実行したとき、最後の出力はどれか。
#include <iostream>
using namespace std;
int main() {
bool x = true;
cout << boolalpha << x << endl;
cout << noboolalpha << x << endl;
return 0;
}
boolalpha で "true" が出力されますが、2行目の noboolalpha でリセットされるため、2行目の出力は 1 になります。
char grade = 'A'; について正しい説明はどれか。
char 型は1文字を格納します。文字リテラルはシングルクォート('A')で囲みます。ダブルクォート("A")は文字列リテラルなので char に代入するとエラーになります。
<< 演算子で型を気にせず一貫して出力できる(演算子オーバーロード)boolalpha で真偽値を true/false として表示できる(解除は noboolalpha)boolalpha はマニピュレータと呼ばれ、出力設定を切り替える仕組みの一つ