[C언어] 5. printf()

이번에는 C언어의 자료형(기본자료형)에 대해 알아보자.





printf()

printf()란?

1) printf()란 👉 일련의 문자(값)로 서식을 지정하여 콘솔에 출력하는 함수

2) printf()의 구성

printf("형식문자열",출력목록);
printf("height:%d\n", height);
  • 형식문자열(format string) : 일반문자열, 형식지정자, 이스케이프 문자
  • 츨력목록: 변수, 상수, 표현식
  • 형식지정자(format specifier)
    • 콘솔에 출력되는 문자열 내부에서 자료형을 출력하기 위해 필요
    • = 형식제어문자, 변환지정자/변환문자(conversion character), 서식사양, 변환명세(conversion specification)
    • %[flag][width][.precision][length]specifier

3) 형식지정자

  • specifier
변환출력사양변환출력사양
%a부동 소수점 수, 16진수, p-표기법(소문자)%x부호가 없는 16진 정수, 소문자 알파벳 사용
%A부동 소수점 수, 16진수, P-표기법(대문자)%X부호가 없는 16진 정수, 대문자 알파벳 사용
%c문자 1개%s문자열
%d부호가 있는 10진(decimal) 정수(integer)%u부호가 없는 10진 정수
%i부호가 있는 10진(decimal) 정수(integer)  
%e부동 소수점 수, e-표기법(소문자)%f부동 소수점 수, 10진수 표기, printf가 double로 변환
%E부동 소수점 수, E-표기법(대문자)  
%g값에 따라 %e%f 사용 => 더 짧은 것
지수가 -4보다 작거나 정밀도보다 크거나 같을 경우 %e
%G값에 따라 %E%f 사용 => 더 짧은 것
지수가 -4보다 작거나 정밀도보다 크거나 같을 경우 %E
%o부호가 없는 8진(octal) 정수%p포인터
%%퍼센트 기호 출력  


  • [Flag]
[Flag]설명
-지정된 필드 너비 내에서 왼쪽 정렬 / (기본값 오른쪽 정렬)
+양수도 +부호 사용 / (기본값 음수만 -부호 표시)
(space)부호를 쓰지 않을 경우 값 앞에 공백 삽입
#▫️ o, x(X) 지정자와 사용: 0이 아닌 값 앞에 각각 0, 0x, 0X가 붙음
▫️ a(A), e(E), f(F), g(G)와 사용: 정수값도 소수점 표현
▫️ (기본값): 정수는 정수로 출력
0공백 대신 숫자 0으로 숫자 왼쪽을 채움


  • [width]
[width]설명
(number)▫️ 인쇄할 최소 문자 수
▫️ 출력값이 더 짧으면 공백으로 채워짐
▫️ 출력값이 더 길면 잘리지 않고 그대로 출력
*▫️ 너비가 형식문자열에 의해 지정되지 않음
▫️ 형식을 지정해야 하는 인수 앞에 추가 정수 값 인수로 지정


  • [.precision] - 정밀도
[.precision]설명
.number▫️ d , i , o , u , x(X): 기록할 최소 자릿수 지정
=>출력 값이 짧으면 0이 채워지고, 더 길더라도 값은 잘리지 않음
▫️ a(A), e(E), f(F): 소수점 뒤에 인쇄할 자릿수 / (기본값 6)
▫️ g(G) : 인쇄할 최대 유효 숫자 수
▫️ s: 인쇄할 최대 문자 수 / (기본값 : 종료 null 문자가 나타날 때까지 모든 문자가 인쇄)
▫️ 명시적인 값 없이 .을 사용하면 0 가정
.*▫️ 너비가 형식문자열에 의해 지정되지 않음
▫️ 형식을 지정해야 하는 인수 앞에 추가 정수 값 인수로 지정





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