D語言變數


變數是什麼,但考慮到一個儲存區域,我們的程式可以操縱的名稱。在D語言中的各變數具有特定的型別,它決定了變數的儲存器的大小和布局;能該儲存器記憶體儲的值的範圍;和設定操作,可以被應用到變數中。

變數的名稱可以由字母,數位和下劃線字元。它必須以字母或下劃線。大寫和小寫字母是不同的,因為D語言是區分大小寫的。根據這個基本型別在前面的章節中解釋的那樣,會有以下幾個基本變數型別:

Type 描述
char 通常一個八位位元組(1位元組)。這是一個整數型別。
int 最自然的機器的整數大小。
float 單精度浮點值。
double 雙精度浮點值。
void 表示不存在型別。

D程式設計語言還允許定義各種其他型別的變數,我們將覆蓋像列舉,指標,陣列,結構,聯合,等後面的章節對於本章中,我們只學習基本的變數型別。

在D語言中變數定義:

變數的定義是指,告訴編譯器在哪裡和多少來建立儲存的變數。變數定義指定了資料型別,並且包含的該型別的一個或多個變數如下的列表:

type variable_list;

在這裡,型別必須是包括char, wchar, int, float, double, bool或任何使用者定義的物件等有效D語言的資料型別,並且variable_list可能包含由逗號分隔的一個或多個識別符號名稱。一些有效的宣告如下所示:

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);所有其他變數的初始值是不確定的。

在D中的變數宣告:

變數宣告所提供的保證編譯器,一個變數與給定的型別和名稱的現有從而使編譯器進行進一步的編輯,而不需要對變數了解完整細節。變數宣告有其意義在編譯的時候,編譯器只需要實際的變數宣告在程式連結的時候。

範例

試試下面的例子,其中的變數都在頂部被宣告,但他們已經定義並初始化主函式中:

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;
}

讓我們編譯和執行上面的程式,這將產生以下結果:

Value of a is : 10
Value of a is : 30
Value of c is : 70
Value of f is : 23.3333

在D語言中左值和右值:

D中有兩種型別的表示式:

  1. lvalue : 這是一個左值的表示式可能會出現無論是左值或右值。

  2. rvalue : 這是一個右值表示式可以出現在賦值的右值而不是左值。

變數是左值,因此可能會出現在賦值的左值。數值常數是右值,所以不得轉讓,不能出現在左值。下面是一個有效的語句:

int g = 20;

但以下情況不屬有效的語句,並會產生編譯時錯誤:

10 = 20;