2017-02-18 11 views
0

Im C++에 새로운 기능이 있으며이 코드의 출력이 8.25가 아니라 8.25가 아닌 이유는 무엇입니까?왜이 C++ 정적 캐스트 코드가 생성되고 int가 double이 아니야

누군가이 코드가 int가 double이 아닌 이유를 설명 할 수 있습니까?

감사합니다 :) 데이터는 문 y = x의 정수 8로 변환됩니다

#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은 double에 유효한 값입니다. 당신은 8.25를 반올림했는데 정확히 무엇을 기대 했습니까? – skypjack

+0

y = x 일 때 int에 대한 암시 적 캐스트를 수행하므로 y는 소수를 갖지 않습니다. 그러면 다시 캐스팅 할 때만 8을 캐스팅합니다. – Bozemoto

+1

여러분은 코멘트와 대답의 차이를 깨닫습니다. 맞습니까? :-)이 두 사람은 (반신 반의하는 유머에 대한) 논평과는 달리, 저에게 * 답장 *처럼 보였습니다. – paxdiablo

답변

5

.

static_castint으로 변환하여 손실 된 ".25"를 되돌릴 수 없습니다.

+0

정말 고맙습니다. –

+0

이것은 맞습니다. * 사용해야 할 캐스트는'temporal_anomoly_cast <>'입니다 :-) – paxdiablo