變量是什么,但考慮到一個存儲區(qū)域,我們的程序可以操縱的名稱。在D語言中的各變量具有特定的類型,它決定了變量的存儲器的大小和布局;能該存儲器內(nèi)存儲的值的范圍;和設(shè)置操作,可以被應(yīng)用到變量中。
變量的名稱可以由字母,數(shù)字和下劃線字符。它必須以字母或下劃線。大寫和小寫字母是不同的,因為D語言是區(qū)分大小寫的。根據(jù)這個基本類型在前面的章節(jié)中解釋的那樣,會有以下幾個基本變量類型:
| Type | 描述 |
|---|---|
| char | 通常一個八位字節(jié)(1字節(jié))。這是一個整數(shù)類型。 |
| int | 最自然的機器的整數(shù)大小。 |
| float | 單精度浮點值。 |
| double | 雙精度浮點值。 |
| void | 表示不存在類型。 |
D編程語言還允許定義各種其他類型的變量,我們將覆蓋像枚舉,指針,數(shù)組,結(jié)構(gòu),聯(lián)合,等后面的章節(jié)對于本章中,我們只學(xué)習(xí)基本的變量類型。
變量的定義是指,告訴編譯器在哪里和多少來創(chuàng)建存儲的變量。變量定義指定了數(shù)據(jù)類型,并且包含的該類型的一個或多個變量如下的列表:
type variable_list;
在這里,類型必須是包括char, wchar, int, float, double, bool或任何用戶定義的對象等有效D語言的數(shù)據(jù)類型,并且variable_list可能包含由逗號分隔的一個或多個標識符名稱。一些有效的聲明如下所示:
int i, j, k; char c, ch; float f, salary; double d;
該行int i, j, k; 既聲明并定義了變量i,j和K;這指示編譯器創(chuàng)建一個 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'.
對于沒有初始化的定義:具有靜態(tài)存儲變量與隱式初始化為NULL(所有字節(jié)的值為0);所有其他變量的初始值是不確定的。
變量聲明所提供的保證編譯器,一個變量與給定的類型和名稱的現(xiàn)有從而使編譯器進行進一步的編輯,而不需要對變量了解完整細節(jié)。變量聲明有其意義在編譯的時候,編譯器只需要實際的變量聲明在程序鏈接的時候。
試試下面的例子,其中的變量都在頂部被聲明,但他們已經(jīng)定義并初始化主函數(shù)中:
import std.stdio; int a = 10, b =10; int c; float f; int main () { writeln("Value of a is : ", a); /* variable re definition: */ int a, b; int c; float f; /* Initialization */ a = 30; b = 40; writeln("Value of a is : ", a); c = a + b; writeln("Value of c is : ", c); f = 70.0/3.0; writeln("Value of f is : ", f); return 0; }
讓我們編譯和運行上面的程序,這將產(chǎn)生以下結(jié)果:
Value of a is : 10 Value of a is : 30 Value of c is : 70 Value of f is : 23.3333
D中有兩種類型的表達式:
lvalue : 這是一個左值的表達式可能會出現(xiàn)無論是左值或右值。
rvalue : 這是一個右值表達式可以出現(xiàn)在賦值的右值而不是左值。
變量是左值,因此可能會出現(xiàn)在賦值的左值。數(shù)值常量是右值,所以不得轉(zhuǎn)讓,不能出現(xiàn)在左值。下面是一個有效的語句:
int g = 20;
但以下情況不屬有效的語句,并會產(chǎn)生編譯時錯誤:
10 = 20;