Saturday, June 30, 2018

C - 変数

変数は、プログラムが操作できる記憶領域に与えられた名前だけです。 Cの各変数には、変数のメモリのサイズとレイアウトを決定する特定の型があります。 そのメモリ内に格納できる値の範囲。 変数に適用できる一連の操作を示します。

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

Sr.No.Type & Description
1
char
Typically a single octet(one byte). This is an integer type.
2
int
The most natural size of integer for the machine.
3
float
A single-precision floating point value.
4
double
A double-precision floating point value.
5
void
Represents the absence of type.
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回しか定義できません。


次の例を試してください。ここでは、変数は先頭に宣言されていますが、main関数内で定義され、初期化されています。

#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の Lvalues と Rvalues
C言語には2種類の表現があります。

lvalue - メモリ位置を参照する式は、「左辺」式と呼ばれます。 左辺値は、割り当ての左辺または右辺のいずれかとして表示されます。

rvalue - rvalueという用語は、メモリ内のあるアドレスに格納されているデータ値を指します。 右辺値は値が割り当てられない式です。つまり、左辺には右辺が表示され、左辺には右辺が表示されません。

変数は左辺値なので、代入の左側に表示されることがあります。 数値リテラルは右辺値なので、左辺には表示されません。 次の有効な文と無効な文を見てください。

int g = 20; // valid statement

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





No comments:

Post a Comment

Interfaces and their protocol stacks

インタフェースとそのプロトコルスタック 主要なネットワーク要素に精通した後、これら要素間のインタフェースをよりよく知る時期が来ています。 インタフェースは、MME、SGWおよびPGWが他のネットワーク要素(例えば、HSSまたはPCRF)と協働することを可能にする。 それらの...