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