2017-02-18 18 views
0

我是新來的C + +,我不知道爲什麼這個代碼的輸出是8而不是8.25?爲什麼這個C++靜態演員代碼產生和int不是雙重

有人可以解釋爲什麼此代碼輸出一個int不是雙?

謝謝:)

#include "stdafx.h" 
#include <iostream> 


int main() 
{ 

double x = 8.25; 
    int y; 
    y = x; 

    double z = static_cast<double>(y); 
    std::cout << z << std::endl; 
return 0; 
} 
+0

8是雙精度值的有效值。你四捨五入到了8.25,你期望的是什麼? – skypjack

+0

當你做y = x時,你正在對int進行隱式轉換,所以y不會有小數。然後,當您將其重新投射回來時,您只需投回8. – Bozemoto

+1

你們*會*意識到評論與答案之間的區別,對嗎? :-)對於我來說,這兩個看起來像*答案,不像這個(可疑的幽默)評論。 – paxdiablo

回答

5

的數據被在聲明y = x轉換爲整數8

A static_cast無法通過轉換爲int來丟棄丟失的「.25」。

+0

我看到了,非常感謝:) –

+0

這是正確的。你*應該*使用的演員是'temporal_anomoly_cast <>':-) – paxdiablo

相關問題