#include <stdio.h>
int main(void)
{
printf (" %d \n", 50.2);
return 0;
}
여기서 %d가 10진수 정수형태로 출력하는 서식문자아님????
그래서 저렇게했을때 50이나와야 된다고 생각했는데 출력된거 보면 -12381232 이딴식으로 나오는데 왜그런지 아는사람?ㅠㅠㅠ
#include <stdio.h>
int main(void)
{
printf (" %d \n", 50.2);
return 0;
}
여기서 %d가 10진수 정수형태로 출력하는 서식문자아님????
그래서 저렇게했을때 50이나와야 된다고 생각했는데 출력된거 보면 -12381232 이딴식으로 나오는데 왜그런지 아는사람?ㅠㅠㅠ
정수형과 부동소수점형 숫자가 메모리에 저장되는 방식이 달라서, 원하는 결과를 얻고싶다면 (int) 50.2처럼 정수형으로 저장될거라는걸 명시해주새요
아하 그렇구나!
그럼 처음에 Int num;
하고 printf("%d", num); 해야된다는 얘기인가요?
그런식말고 그냥 애초에 값을 넣을때 앞에 명시적 타입캐스팅을 해줘야한다는 뜻입니다. int num 이라고 해주셔도 int num = (int)50.2; 라는식으로 50.2를 int형으로 캐스팅해서 int형의 num이라는 변수에 우겨넣는다는 뜻입니다. 원하시는대로 하시고 싶으면 printf("%d \n", (int)50.2); 라는식으로 해줘야합니다.
아리가또!!!
50.2 는 메모리에 0100 0010 0100 1000 1100 1100 1100 1101 이렇게 들어가요,
50 은 메모리에 0000 0000 0000 0000 0000 0000 0011 0010 이렇게 들어가요,