본문 바로가기
Study/C언어

C언어 - 다양한 자료형의 10진수 정수값 구하기 & 오류가 나는 이유

by 멘탈은안녕하신가 2018. 12. 20.
728x90
반응형
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h>
 
void main(){
    double num1 = 123456// 결과값 : 0
    float num2 = 123456// 결과값 : 1090397184
    int num3 = 123456// 결과값 : 0
    double num4 = 123456.123456// 결과값 1090397184
    float num5 = 123456.123456// 결과값 123456
    int num6 = 123456.123456// 결과값 -106102872
 
    printf"10진수 정수형 출력하기\n============================\n" );
    printf"double num1 : %d\n
    float num2 : %d\n 
    int num3 : %d\n
    double num4 : %d\n
    float num5 : %d\n
    int num6 : %d\n", num1, num2, num3, num4, num5, num6);
 
    printf"============================\n" );
    return 0;
}
cs

위와같은 결과값이 나오는 이유는 printf를 잘못 사용했기 때문이다.

첫번째, printf("%d", num1); 에서 printf는 %d라는 형식지정자를 보고 4Byte의 변수를 10진수 정수로 출력하려 한다.
그런데 주어진 변수는 double형인 8Byte, 때문에 앞의 4Byte만 출력된다.

두번째, printf("%d", num2); 에서 위와 같은 결과값이 나오는 이유는 첫번째에서 4Byte를 출력하고 남아있던 남은 4Byte가 출력 되기 때문이다.

때문에 위와 같은 이유로 num3의 출력값도 num2의 값이 밀려 출력되는 것이다.


728x90
반응형

댓글