C++変数タイプ完全解説:メモリ、制限、操作
変数は、プログラムが操作できる名前付きストレージを提供します。C++の各変数には特定の型があり、それによって変数のメモリのサイズとレイアウト、そのメモリに格納できる値の範囲、変数に適用できる操作のセットが決まります。
変数名は文字、数字、アンダースコア文字で構成できます。文字またはアンダースコアで始まる必要があります。C++は大文字小文字を区別するため、大文字と小文字は区別されます。
前章で説明した通り、C++には以下の基本的な変数タイプがあります:
| No. | 型と説明 |
|---|---|
| 1 | bool true または false の値を格納します。 |
| 2 | char 通常1オクテット(1バイト)。整数型の一種です。 |
| 3 | int マシンにとって最も自然な整数サイズです。 |
| 4 | float 単精度浮動小数点値です。 |
| 5 | double 倍精度浮動小数点値です。 |
| 6 | void 型の不在を表します。 |
| 7 | wchar_t ワイド文字型です。 |
C++では、列挙型、ポインタ、配列、参照、データ構造、クラス など、その後の章で説明するさまざまな他の変数タイプも定義できます。
以下のセクションでは、さまざまなタイプの変数を定義、宣言、使用する方法を説明します。
C++での変数定義
変数定義は、コンパイラに変数のストレージをどこに、どれだけ作成するかを伝えます。変数定義はデータ型を指定し、以下のようにその型の変数を1つ以上リストします:
type variable_list;
ここで、type は char、w_char、int、float、double、bool、またはユーザー定義オブジェクトなど、有効なC++データ型でなければなりません。variable_list は、カンマで区切られた1つ以上の識別子名で構成されます。有効な宣言の例:
int i, j, k; char c, ch; float f, salary; double d;
int i, j, k; という行は、i、j、k という変数を int 型として宣言し、かつ定義します。これはコンパイラに、i、j、k という名前の int 型変数を作成するよう指示します。
変数は宣言時に初期化(初期値の割り当て)できます。初期化子は等号に続けて定数式を指定します:
type variable_name = value;
例:
extern int d = 3, f = 5; // dとfの宣言 int d = 3, f = 5; // dとfの定義と初期化 byte z = 22; // zの定義と初期化 char x = 'x'; // 変数xに値'x'を設定
初期化子なしの定義の場合:静的ストレージ期間を持つ変数は暗黙的にNULL(すべてのバイトが0)で初期化され、それ以外の変数の初期値は未定義です。
C++での変数宣言
変数宣言は、指定された型と名前を持つ変数が存在することをコンパイラに保証し、コンパイラが変数の完全な詳細を必要とせずにそれ以降のコンパイルを進められるようにします。変数宣言はコンパイル時にのみ意味を持ち、プログラムのリンク時に実際の変数定義が必要です。
複数のファイルを使用していて、変数を其中の1つのファイルで定義しており、それがリンク時に利用可能になる場合、変数宣言が役立ちます。任意の場所で変数を宣言するには extern キーワードを使用します。C++プログラム内で変数を複数回宣言できますが、定義できるのは1つのファイル、関数、またはコードブロック内で1回だけです。
例
トップで変数を宣言し、main関数内で定義している例を試してみてください:
Live Demo#include <iostream>
using namespace std;
// 変数宣言:
extern int a, b;
extern int c;
extern float f;
int main () {
// 変数定義:
int a, b;
int c;
float f;
// 実際の初期化
a = 10;
b = 20;
c = a + b;
cout << c << endl;
f = 70.0/3.0;
cout << f << endl;
return 0;
}
上記コードをコンパイルして実行すると、以下の結果が得られます:
30 23.3333
同じ概念が関数宣言にも適用されます。関数名を宣言時に提供し、実際の定義は別の場所で行えます。例:
// 関数宣言
int func();
int main() {
// 関数呼び出し
int i = func();
}
// 関数定義
int func() {
return 0;
}
左辺値と右辺値
C++には2種類の式があります:
左辺値 : メモリ位置を参照する式を「左辺値」と呼びます。左辺値は代入の左辺にも右辺にも現れることができます。
右辺値 : メモリ内のあるアドレスに格納されているデータ値を指します。右辺値は値を代入できない式、つまり代入の右辺には現れますが左辺には現れません。
変数は左辺値なので、代入の左辺に現れることができます。数値リテラルは右辺値なので、代入できず、代入の左辺に現れることはできません。以下は有効な文です:
int g = 20;
しかし、以下は無効な文であり、コンパイル時エラーになります:
10 = 20;
C言語
- C++演算子完全ガイド:算術・代入・関係・論理・ビット演算子と実例
- C++変数とデータ型:int、double、char、string、boolを徹底解説
- C++演算子を徹底解説:種類、例、サンプルプログラム付き
- C++ポインタをマスター:概念、例、実践的応用
- C++ char型をマスター:宣言、ASCII、変換テクニック
- C 言語ポインタ完全ガイド: 型、使い方、ベストプラクティス
- C言語の変数を理解する:型、命名規則、メモリ管理
- C++変数タイプ完全解説:メモリ、制限、操作
- C++変数のスコープを理解する:ローカル変数とグローバル変数
- Javaプリミティブデータ型:例付き完全ガイド
- Java変数の種類:ローカル、インスタンス、クラス変数を徹底解説