下面的代碼的類型是鑄造誤差爲什麼類型鑄造在這裏不起作用?
#define IMG_I (std::complex<double>(0, 1))
#define PI 3.1415926535
for (unsigned long int j = 0; j < 10; ++j)
std::cout << exp(-IMG_I * PI * j);
類型鑄件可以通過使用額外的括號或改變乘法的順序可以容易地解決。但是我不清楚爲什麼類型轉換問題首先出現,爲什麼C++不能像上面那樣處理上面的代碼。
任何人都可以爲我解釋這個嗎?
如何處理你遇到的錯誤。我懷疑編譯器可能與' - (std :: complex(0,1))'有關,但很難說沒有錯誤信息 –
tloach
2011-02-23 19:10:45
爲什麼不只是使用'const std :: complex IMG_I(0, 1);'? –
2011-02-23 19:17:12
你的宏隱藏了一些隱式轉換爲不兼容的類型... – AJG85 2011-02-23 19:21:10