D語言中的類型

類型

基本數據類型

關鍵字 描述 默認初始值(.init)
void 無類型 -
bit single bit false
byte signed 8 bits 0
ubyte unsigned 8 bits 0
short signed 16 bits 0
ushort unsigned 16 bits 0
int signed 32 bits 0
uint unsigned 32 bits 0
long signed 64 bits 0L
ulong unsigned 64 bits 0L
cent signed 128 bits(爲未來保留) 0
ucent unsigned 128 bits(爲未來保留) 0
float 32 bit 浮點數 float.nan
double 64 bit 浮點數 double.nan
real 硬件支持的最大的浮點數(實現注意:在 Intel CPU 上是 80 bits ) real.nan
ifloat 虛 float float.nan * 1.0i
idouble 虛 double double.nan * 1.0i
ireal 虛 real real.nan * 1.0i
cfloat 兩個 float 值構成的複數 float.nan + float.nan * 1.0i
cdouble 複數 double double.nan + double.nan * 1.0i
creal 複數 real real.nan + real.nan * 1.0i
char unsigned 8 bit UTF-8 0xFF
wchar unsigned 16 bit UTF-16 0xFFFF
dchar unsigned 32 bit UTF-32 0x0000FFFF

派生數據類型

  • 指針
  • 數組
  • 函數

用戶定義數據類型

  • 別名
  • typedef
  • 枚舉
  • 結構
  • 聯合

指針轉換

D 允許指針到非指針、非指針到指針的轉換,但是,決不要對指向由垃圾收集程序分配的數據的指針進行這樣的操作。

隱式轉換

D 有許多類型,有一些是內建的,另一些是派生的。如果每次類型轉換都需要顯式轉型的話會是很麻煩的事,所以我們用隱式轉換來自動處理那些明顯的轉型。

使用 typedef 聲明的類型可以被轉換爲它所代表的類型,但是反過來就必須進行顯式轉型。例如:

	  myint;
	 i;
	myint m;
	i = m;			
	m = i;			
	m = (myint)i;		
	

整數提升

下面的類型會被隱式提升爲 int
	bit
	byte
	ubyte
	short
	ushort
	enum
	char
	wchar
	dchar
    
使用 typedef 聲明的類型會被轉換爲它所代表的類型。

常用算數轉換

常見的算術轉換會將二元運算符的操作數轉換爲通用的類型。這個操作數必須已經是算術類型。下面的規則將會按順序應用:
  1. 使用 typedef 聲明的類型會被轉換爲它所代表的類型。
  2. 如果有操作數是 real ,另一個操作數會被轉換爲 real 。
  3. 如果一個操作數是 double ,另一個操作數會被轉換爲 double 。
  4. 如果一個操作數是 float ,另一個操作數會被轉換爲 float 。
  5. 對每個操作數應用整數提升,然後:
    1. 如果兩個操作數類型相同,無需再作轉換。
    2. 如果兩個操作數都是有符號或無符號的,較小的類型會被轉換爲較大的類型。
    3. 如果有符號的類型比無符號的類型大,無符號的類型會被轉換爲有符號的類型。
    4. 否則有符號的類型會被轉換爲無符號的類型。

委託

D 中沒有成員指針,但支持一個更爲有用的概念—— 委託(delegates)。委託是兩塊數據的聚集:一個對象的引用和一個函數指針。當調用函數時,對象引用構造 this 指針。

委託的聲明同函數指針的聲明很像,差別是關鍵字 delegate 替代了 (*) ,並且隨後跟着標誌符:

	 function() fp;	
	 delegate() dg;	
	
C 風格的聲明函數指針的語法也被支持:
	 (*fp)();		
	
委託同函數指針一樣被初始化:
	 func();
	fp = &func;		

	 OB
	{    member();
	}
	OB o;
	dg = &o.member;		
				
	
委託不能用靜態成員函數或者非成員函數初始化。

委託同函數指針一樣調用:

	fp(3);		
	dg(3);		
	
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章