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
반응형
'Study > C언어' 카테고리의 다른 글
C언어 - 배열과 스택, 버퍼 오버플로우 (0) | 2020.06.03 |
---|---|
C언어 - 여러가지 포인터와 배열의 조합, 출력값 (0) | 2018.12.20 |
C언어 - 2차원 배열과 메모리 크기 (0) | 2018.12.20 |
C언어 - 포인터 Call-By-Value와 Call-By-Reference의 구분, 더블포인터의 이해 (0) | 2018.12.17 |
C언어 - sacnf의 &(주소연산자) (0) | 2018.12.17 |
댓글