2013-11-14 322 views
2

我不是C++開發人員,但今天我找到了一個C++代碼並試圖理解它。所以,我已經堆放在這段代碼:C++將int轉換爲double

int m = 2, n = 3, i = 1; 
double mid = (double)m/n * i; 
int d = (int)mid + 1; 

printf("%d %d\n", mid, d); 

其將被打印到控制檯的結果是:1431655765 1071994197.這似乎與變量m的鑄造翻一番有關,但我不知道它是如何發生的。我需要有人幫助我理解它。提前致謝!

+0

這個問題的標題似乎不匹配它的的確確是。 – dbliss

+0

[這裏](http://www.cplusplus.com/doc/tutorial/typecasting/)是關於類型轉換的文檔頁面。 – dbliss

+0

C++?那麼最好使用'static_cast (m)'而不是舊式'(double)m' – Anubis

回答

4

您應該在printf中打印一個帶有%lf格式說明符的雙重(mid)。

+3

輸出的格式說明符應該是'%f';這適用於float和double,因爲當通過省略號傳遞時,浮點數會提升爲double。 '%lf'無效。對於'scanf','%f'表示float,'%lf'表示double,'%Lf'表示長整倍。 –

1

改變的printf到

printf("%f %i\n", mid, d); 

將實際打印你所期望的,即0.666667 1