1-04. 変数
公開日: 21:48 1. 基本編/1-04. 変数
変数はプログラムが操作できるストレージ(保存領域)を提供してくれます。C++において、各変数はサイズとメモリ配置を決定する特定の型、メモリ内に保存できる値の範 囲、一連の操作は変数に適用することができる命令セットを持ちます。変数の名前は文字、数字、及びアンダースコアで構成されます。名前は1つ以上の文字 かアンダースコアで始めなければなりません。C++は厳格なので、大文字と小文字は区別されます。前のページで説明したように、C++には次のような基本的な変数の型があります。
型 | 説明 |
---|---|
bool | 真(true)か偽(false)を保持 |
char | 一般的に1バイトで整数型 |
int | コンピュータが扱いやすいサイズの整数 |
float | 浮動小数点 |
double | 実数 |
void | 型が存在しないことを表現 |
wchar_t | ワイドキャラクター文字 |
C++は後のページで説明する列挙体、ポインタ、配列、参照、構造体、クラスなどのような様々なの型を定義することができます。
次に様々な変数の型をどのように定義、宣言、使用するかを説明します。
C++における変数の定義
変数の定義とはコンパイラにどこに、どれだけのストレージを確保するか伝えることです。変数の定義は型を指定し、次のような1つ以上の変数のリストを含みます。
type variable_list;
typeは有効なC++のデータ型でなければならず、char、w_char、int、float、double、boolまたはユーザ定義のオブジェクトなどです。variable_listはカンマで区切られた1つ以上の識別子名で構成されます。次に有効な宣言を示します。
int i, j, k; char c, ch; float f, salary; double d;最初の行のint i, j, k;は変数i,j,kを定義、宣言していて、コンパイラに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++における変数の宣言
変数の宣言は、コンパイラに与えられた型と名前の変数が存在することを保証してくれるので、変数についての完全な詳細を必要とせずに、コンパイラはさらに前へコンパイルを進めることができます。変数の宣言はコンパイルの時にのみ意味があり、コンバイラは実際の変数の宣言をプログラムをリンクするときに必要とします。変数の宣言は複数のファイルを使用している時に便利で、ファイルのいずれかで変数を定義するとプログラムのリンク時に利用できるようになります。externキーワードを宣言に使うことでC++プログラム内で複数回宣言できますが、ファイル、関数、コードのブロック内で一度だけ定義されます。
使用例
次のサンプルはファイルの先頭で宣言していますが、定義はメイン関数の中でされています。#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種類の式があります。左辺値(lvalue)
メモリ位置を参照する式は"左辺値"式といいます。左辺値は代入の左側右側のいずれかに表示されます。
右辺値(rvalue)
右辺値はメモリ内のアドレスに格納されたデータ値を参照します。右辺値は自身に値を割り当てられない式であり、右辺値は代入の右側に現れ、左側には使えないことを意味します。
変数は左辺値なので、代入の左側に表示されます。整数は右辺値なので割当できず、左側にくることはありません。次の例は有効な構文です。
int g = 20;しかし次の例は無効であり、コンパイルエラーが出ます。
10 = 20;
0 件のコメント :
コメントを投稿