2017-08-30 65 views
-4

我仍然是C++的初學者,所以我在基礎知識上尋求一些幫助。 這裏,在下面的代碼中,我使用類型轉換來查找122/65的值,但即使使用雙數據類型,我也只獲取整數部分。爲什麼double a =(double)('z'/'A')只給出C++中的整數部分?

#include <iostream> 

using namespace std; 

int main() 

{ 

    double a=(double)('z'/'A'); 

    cout<<a; 

    return 0; 

} 

有人能爲我提供一個很好的理由嗎?

謝謝。

+3

因爲'「z''和'」 A''都是*整數*,和你有一個整數除法。您只將整數除法的*結果*轉換爲「double」。 –

+1

你能否向我們解釋爲什麼你在你的部門使用*字符?你試圖通過這個非常奇怪的部門來解決的「實際」問題是什麼? –

+1

'((double)'z')/'A'' –

回答

5

您進行整數除法,然後對結果進行類型轉換以加倍。基本上你:

(double) (122/65) = (double) (1) = 1.0 
          ^truncated -> integer division 

如果你想有一個浮點除法,你可以這樣來做:

double a = (double)'z'/(double)'A'; 
//  a = 122.0  /65.0 
+0

@Someprogrammerdude是,已編輯。謝謝。 – izlin

相關問題