C 変数
変数は実際には、プログラムが操作できる記憶域の名前にすぎません。 C の各変数には特定の型があり、その型によって変数ストレージのサイズとレイアウトが決まり、この範囲内の値をメモリに保存し、演算子を変数に適用できます。
変数名には文字、数字、アンダースコア文字を使用できます。文字またはアンダースコアで始める必要があります。 C では大文字と小文字が区別されるため、大文字と小文字は異なります。前の章で説明した基本型に基づいて、次の基本変数型があります:
型 | 説明 |
---|---|
char | は通常、オクテット (1 バイト) です。これは整数型です。 |
int | マシンにとって最も自然な整数のサイズ。 |
float | 単精度浮動小数点値。 |
double | 倍精度浮動小数点値。 |
void | は、型が存在しないことを示します。 |
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;
lineint i, j, k; は、変数 i、j、および k を宣言および定義します。これは、コンパイラーに、int 変数型の i、j、k という名前の変数を作成するように指示します。
変数は宣言時に初期化(初期値を指定)することができます。初期化子は、以下に示すように、等号とそれに続く定数式で構成されます:
type variable_name = value;
以下にいくつかの例を示します:
extern int d = 3, f = 5; // d 和 f 的声明, 这就是单纯的声明int d = 3, f = 5; // 定义并初始化 d 和 fbyte z = 22; // 定义并初始化 zchar x = 'x'; // 变量 x 的值为 'x'
初期化なしの定義: 静的ストレージ期間を持つ変数は暗黙的に NULL に初期化されます (すべてのバイトの値は0)、他のすべての変数の初期値は未定義です。
C の変数宣言
変数宣言は、変数が指定された型と名前で存在することをコンパイラーに保証するため、コンパイラーは変数の完全な詳細を知らなくてもさらにコンパイルを続行できます。変数宣言はコンパイル時にのみ意味を持ち、コンパイラはプログラムがリンクされるときに実際の変数宣言を必要とします。
変数の宣言には 2 つの状況があります:
1. 1 つはストレージ領域の作成が必要です。例: int a は、宣言時にすでに記憶域スペースを作成しています。
2. もう 1 つの方法では、extern キーワードを使用して変数名を定義せずに宣言するため、ストレージ領域を作成する必要がありません。 例: extern int a ここで、変数 a は他のファイルで定義できます。
extern キーワードがない限り、それらはすべて変数の定義です。
extern int i; //声明,不是定义int i; //声明,也是定义
例
次の例を試してください。変数はヘッダーで宣言されていますが、メイン関数で定義および初期化されています。
#include <stdio.h>// 变量声明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; printf("value of c : %d \n", c); f = 70.0/3.0; printf("value of f : %f \n", f); return 0;}
上記のコードをコンパイルして実行すると、次の結果が生成されます。
value of c : 30value of f : 23.333334
C の Lvalues (Lvalues) と rvalues (Rvalues)
C には 2 種類の式があります:
Lvalue (lvalue): メモリの場所を指す式は左辺値式と呼ばれます。左辺値は、割り当て番号の左側または右側に表示されます。
右辺値: 右辺値という用語は、メモリ内の特定のアドレスに格納されている数値を指します。右辺値は代入できない式です。つまり、右辺値は代入番号の右側には表示されますが、左側には表示されません。
変数は左辺値であるため、割り当て番号の左側に表示できます。数値リテラルは右辺値であるため、割り当てたり、割り当て番号の左側に表示したりすることはできません。有効なステートメントは次のとおりです:
int g = 20;
しかし、次の文は有効なステートメントではないため、コンパイル時エラーが生成されます:
10 = 20;