Cprogramming-c-variables

提供:Dev Guides
移動先:案内検索

C-変数

変数は、プログラムが操作できるストレージ領域に付けられた名前に他なりません。 Cの各変数には特定の型があり、変数のメモリのサイズとレイアウトを決定します。そのメモリ内に保存できる値の範囲。変数に適用できる一連の操作。

変数の名前は、文字、数字、およびアンダースコア文字で構成できます。 文字またはアンダースコアで始まる必要があります。 Cでは大文字と小文字が区別されるため、大文字と小文字は区別されます。 前の章で説明した基本タイプに基づいて、次の基本変数タイプがあります-

Sr.No. Type & Description
1

char

通常、単一のオクテット(1バイト)。 これは整数型です。

2

int

マシンの整数の最も自然なサイズ。

3

float

単精度浮動小数点値。

4

double

倍精度の浮動小数点値。

5

void

タイプがないことを表します。

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という名前の変数を作成するようコンパイラーに指示します。

変数は、宣言で初期化(初期値を割り当て)できます。 初期化子は、等号とそれに続く定数式で構成されます-

type variable_name = value;

いくつかの例は-

extern int d = 3, f = 5;   //declaration of d and f.
int d = 3, f = 5;          //definition and initializing d and f.
byte z = 22;               //definition and initializes z.
char x = 'x';              //the variable x has the value 'x'.

初期化子のない定義の場合:静的ストレージ期間を持つ変数は、暗黙的にNULLで初期化されます(すべてのバイトの値は0です)。他のすべての変数の初期値は未定義です。

Cの変数宣言

変数宣言は、指定されたタイプと名前の変数が存在することをコンパイラーに保証します。これにより、コンパイラーは、変数に関する完全な詳細を必要とせずに、さらにコンパイルを進めることができます。 変数定義はコンパイル時のみ意味を持ち、コンパイラはプログラムをリンクするときに実際の変数定義を必要とします。

変数宣言は、複数のファイルを使用していて、プログラムのリンク時に使用できるファイルの1つで変数を定義するときに役立ちます。 キーワード extern を使用して、任意の場所で変数を宣言します。 Cプログラムでは変数を複数回宣言できますが、ファイル、関数、またはコードブロックで定義できるのは1回だけです。

次の例を試してください。変数は上部で宣言されていますが、メイン関数内で定義および初期化されています-

#include <stdio.h>

//Variable declaration:
extern int a, b;
extern int c;
extern float f;

int main () {

  /*variable definition:*/
   int a, b;
   int c;
   float f;

  /*actual initialization*/
   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 : 30
value of f : 23.333334

同じ概念が関数宣言にも当てはまり、宣言時に関数名を指定し、実際の定義は他のどこでも指定できます。 たとえば-

//function declaration
int func();

int main() {

  //function call
   int i = func();
}

//function definition
int func() {
   return 0;
}

Cの左辺値と右辺値

Cには2種類の式があります-

  • lvalue -メモリ位置を参照する式は「lvalue」式と呼ばれます。 左辺値は、割り当ての左辺または右辺として表示される場合があります。
  • rvalue -rvalueという用語は、メモリ内のあるアドレスに格納されているデータ値を指します。 右辺値は、値を割り当てることができない式です。つまり、右辺には右辺が表示されますが、左辺には表示されない場合があります。

変数は左辺値であるため、割り当ての左側に表示される場合があります。 数値リテラルは右辺値であるため、割り当てられず、左側に表示できません。 次の有効および無効なステートメントを見てください-

int g = 20;//valid statement

10 = 20;//invalid statement; would generate compile-time error