#include
int main(void)
{
double DNumber = 0;
printf_s("실수를 입력해주세요:");
scanf_s("%lf",&DNumber);
int INumber = DNumber;
printf("double형의 값 = %lf \r\n", DNumber);
printf("int형의 값 = %lf \r\n", INumber);
return 0;
}
이렇게 만들었는데.
일단 잘못됬다는건 아는데 (해보라는것 자체가 잘못된걸 해보란 거여서.)
질문의 요점은 저 int형으로 바꿀때 %lf쓰면 소수값은 0나와고 정수는 숫자 나와야 되는거 아니에요?
왜 0밖에 안나오는지 설명좀 해주실분...
잘 봤읍니다
printf는 멍청해서 변수가 어떤 타입인지 자동으로 판단하지 못한다. 그래서 %d %lf 등에 따라 다르게 동작하는데 int와 double은 메모리상 표현이 판이하게 다르다. 단적인 예로 int는 4바이트지만 double은 8바이트이므로 메모리 앞부분만 읽게 된다
옹 감사합니다. 조금 이해가 갔음
비유하자면 주어진 동물이 어떤 종인지 판단하는 기계에 코끼리를 입력으로 넣었는데, 기계에 동물의 크기를 잘못 입력하여 기계가 코끼리의 코만 보고 뱀으로 판단한 것과 비슷