Objective-C変数
変数は、プログラムが操作できるストレージ領域に付けられた名前に他なりません。Objective-Cの各変数には、変数のメモリのサイズとレイアウトを決定する特定のタイプがあります。そのメモリ内に保存できる値の範囲。変数に適用できる一連の操作。
変数の名前は、文字、数字、および下線文字で構成できます。文字またはアンダースコアで始まる必要があります。Objective-Cでは大文字と小文字が区別されるため、大文字と小文字は区別されます。前の章で説明した基本的なタイプに基づいて、次の基本的な変数タイプがあります-
シニア番号 | タイプと説明 |
---|---|
1 | char 通常、1オクテット(1バイト)。これは整数型です。 |
2 | int マシンの整数の最も自然なサイズ。 |
3 | float 単精度浮動小数点値。 |
4 | double 倍精度浮動小数点値。 |
5 | void タイプがないことを表します。 |
Objective-Cプログラミング言語では、他のさまざまなタイプの変数を定義することもできます。これについては、列挙、ポインター、配列、構造体、共用体などの後続の章で説明します。この章では、基本的な変数タイプのみを学習します。
Objective-Cでの変数の定義
変数定義とは、変数のストレージを作成する場所と量をコンパイラーに指示することを意味します。変数定義はデータ型を指定し、次のようにその型の1つ以上の変数のリストを含みます-
type variable_list;
ここに、 type char、w_char、int、float、double、bool、または任意のユーザー定義オブジェクトなどを含む有効なObjective-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です)。他のすべての変数の初期値は未定義です。
Objective-Cでの変数宣言
変数宣言は、指定されたタイプと名前で1つの変数が存在することをコンパイラーに保証し、コンパイラーが変数に関する完全な詳細を必要とせずにさらにコンパイルを続行できるようにします。変数宣言はコンパイル時にのみ意味があり、コンパイラはプログラムのリンク時に実際の変数宣言を必要とします。
変数宣言は、複数のファイルを使用していて、プログラムのリンク時に使用できるファイルの1つで変数を定義する場合に役立ちます。使用しますextern任意の場所で変数を宣言するキーワード。Objective-Cプログラムで変数を複数回宣言することはできますが、ファイル、関数、またはコードブロックで定義できるのは1回だけです。
例
次の例を試してください。変数は上部で宣言されていますが、main関数内で定義および初期化されています-
#import <Foundation/Foundation.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;
NSLog(@"value of c : %d \n", c);
f = 70.0/3.0;
NSLog(@"value of f : %f \n", f);
return 0;
}
上記のコードをコンパイルして実行すると、次の結果が得られます。
2013-09-07 22:43:31.695 demo[14019] value of c : 30
2013-09-07 22:43:31.695 demo[14019] value of f : 23.333334
同じ概念が関数宣言にも当てはまり、宣言時に関数名を指定すると、実際の定義は他の場所で指定できます。次の例では、C関数を使用して説明しています。ご存知のように、Objective-CはCスタイルの関数もサポートしています。
// function declaration
int func();
int main() {
// function call
int i = func();
}
// function definition
int func() {
return 0;
}
Objective-Cの左辺値と右辺値
Objective-C-には2種類の表現があります。
lvalue−メモリ位置を参照する式は「左辺値」式と呼ばれます。左辺値は、割り当ての左側または右側のいずれかとして表示される場合があります。
rvalue−右辺値という用語は、メモリ内のあるアドレスに格納されているデータ値を指します。右辺値は、値を割り当てることができない式です。つまり、右辺値は割り当ての右側には表示されますが、左側には表示されません。
変数は左辺値であるため、割り当ての左側に表示される場合があります。数値リテラルは右辺値であるため、割り当てられない場合があり、左側に表示することはできません。以下は有効なステートメントです-
int g = 20;
しかし、以下は有効なステートメントではなく、コンパイル時エラーを生成します-
10 = 20;