몽상실현개발주의

[따배씨] 4.9 printf() 함수가 인자들을 해석하는 과정 본문

Language/C

[따배씨] 4.9 printf() 함수가 인자들을 해석하는 과정

migrationArc 2021. 5. 14. 10:31

[따배씨] 4.9 printf() 함수가 인자들을 해석하는 과정

따배씨 - 따라하며 배우는 C언어

4강 문자열과 형식 맞춘 입출력

4.9 printf() 함수가 인자들을 해석하는 과정

 

#include <stdio.h>

int main()
{
    float   n1 = 3.14;  // 4 bytes
    double  n2 = 1.234; // 8 bytes
    int     n3 = 1024;  // 4 bytes
    
    printf("%f %f %d\n\n", n1, n2, n3);
  	// 3.140000 1.234000 1024

    return 0;
}
  • 정상 출력
printf("%d %d %d\n\n", n1, n2, n3);	// 4, 4, 4 (N, N, N)
// 16106123736 1074339512 -922712936
  • 4 4 4 로 할당한 공간에 8 8 4 가 입력되어 메모리 공간에 밀려 저장되어서 정상 출력 X

 

printf("%lld %lld %d\n\n", n1, n2, n3);	// 8, 8, 4 (N, N, Y)
// 4614253070451212288 4608236261112822104 1024
  • 메모리 크기는 맞지만 float/double 형태로 저장되있는 data 를 강제로 int 형으로 출력하여 정상 출력 X

 

printf("%f %d %d\n\n", n1, n2, n3); // 8, 4, 4 (Y, N, N)
// 3.140000 -927712936 1072938614
  • 8 4 4 로 할당한 공간에 4 8 4 가 입력됨, type이 맞지 않아 정상 출력 X

 

printf("%f %lld %d\n\n", n1, n2, n3); // 8, 8, 4 (Y, N, Y)
// 3.140000 4608236261112822104 1024
  • double type을 long long integer type으로 출력하여 정상출력 X
  • 메모리 size는 맞기 때문에 data가 밀려 쓰여지지 않음

 

 


이 글의 모든 사진과 내용의 출처는 홍정모 교수님께 있음을 알려드립니다.

http://blog.naver.com/atelierjpro

 

실리콘 밸리의 프로그래머 : 네이버 블로그

안녕하세요! 홍정모 블로그에 오신 것을 환영합니다. 주로 프로그래밍 관련 메모 용도로 사용합니다. 강의 수강하시는 분들은 홍정모 연구소 카페로 오세요.

blog.naver.com

http://www.inflearn.com/course/following-c

 

홍정모의 따라하며 배우는 C언어 - 인프런 | 강의

'따배씨++'의 성원에 힘입어 새롭게 개발된 C 언어로 시작하는 프로그래밍 입문 강의입니다. '따배씨'와 함께 프로그래밍 인생을 업그레이드 해보세요., 따라하며 배우는 C언어 '따배씨++'의 성원

www.inflearn.com

 

Comments