我已經開始學習D了,並且在Andrei Alexandrescu編寫的D編程語言提供的示例中遇到了一些問題。少數例子因int和ulong類型之間的轉換而無法編譯,其中一個我在下面概述。D中循環索引變量的默認類型是什麼?
我懷疑問題是由於我正在使用64位版本的編譯器(Digital Mars 2.064.2用於64位Ununtu)而引起的,本書中的示例使用32位編譯器進行了測試。
以下的代碼:
#!/usr/bin/rdmd
import std.stdio;
void main(){
int[] arr = new int[10];
foreach(i, ref a; arr)
a = i+1;
writeln(arr);
}
失敗,出現以下編譯器錯誤
[email protected]:chapter1 > ./arrays.d
./arrays.d(9): Error: cannot implicitly convert expression (i + 1LU) of type ulong to int
Failed: 'dmd' '-v' '-o-' './arrays.d' '-I.'
我可通過顯式地聲明變量i爲int類型的解決這個問題:
foreach(int i, ref a; arr)
a = i+1;
確定循環索引的默認類型將在D中的規則是什麼?是因爲我使用64位編譯器嗎?