내가 공부할때 참고하는 책은 메모리 관리를 중요하게 생각해
메모리를 최소한으로 사용하려다보니 자료형이 자연스레 많아지게 되었고
결국엔 서식 지정자가 헷갈리는 경우가 많았다.
알아보니, 서식 지정자를 구체적으로 설정해야 잠재적인 오류를 줄일 수 있다고 한다 !
이를 다 외울 필요는 없겠지만 자주 쓰이는 지정자들은 어느정도 외워놓고
이런 것도 있다는 정도만 알아두면 요긴하게 쓰일 것 같다.
%c char 문자
%s char*, char[] 문자열
%hd short 부호를 포함한 2byte 크기의 정수 (10진수)
%d int 부호를 포함한 int 타입 크기의 정수 (10진수)
%ld long 부호를 포함한 long 타입 크기의 정수 (10진수)
%lld long long 부호를 포함한 8byte 크기의 정수 (10진수)
%u unsigned int 부호를 포함하지 않는 int 타입 크기의 정수 (10진수)
%lu unsigned long 부호를 포함하지 않는 long 타입 크기의 정수 (10진수)
%llu unsigned long long 부호를 포함하지 않는 8byte 크기의 정수 (10진수)
%ho unsigned short 부호를 포함하지 않는 2byte 크기의 정수 (8진수)
%o unsigned int 부호를 포함하지 않는 int 타입 크기의 정수 (8진수)
%lo unsigned long 부호를 포함하지 않는 long 타입 크기의 정수 (8진수)
%llo unsigned long long 부호를 포함하지 않는 8byte 크기의 정수 (8진수)
%hx unsigned short 부호를 포함하지 않는 2byte 크기의 정수 (16진수, abcdef 를 소문자로 표기)
%x unsigned int 부호를 포함하지 않는 int 타입 크기의 정수 (16진수, abcdef 를 소문자로 표기)
%lx unsigned long 부호를 포함하지 않는 long 타입 크기의 정수 (16진수, abcdef 를 소문자로 표기)
%llx unsigned long long 부호를 포함하지 않는 8byte 크기의 정수 (16진수, abcdef 를 소문자로 표기)
%hX unsigned short 부호를 포함하지 않는 2byte 크기의 정수 (16진수, ABCDEF 를 대문자로 표기)
%X unsigned int 부호를 포함하지 않는 int 타입 크기의 정수 (16진수, ABCDEF 를 대문자로 표기)
%lX unsigned long 부호를 포함하지 않는 long 타입 크기의 정수 (16진수, ABCDEF 를 대문자로 표기)
%llX unsigned long long 부호를 포함하지 않는 8byte 크기의 정수 (16진수, ABCDEF 를 대문자로 표기)
%f float 소수점으로 표현한 4byte 크기의 실수 (10진수)
%lf double 소수점으로 표현한 8byte 크기의 실수 (10진수)
%llf , %Lf long double 소수점으로 표현한 long double 타입 크기의 실수 (10진수)
%e float 지수 표기법으로 표현한 4byte 크기의 실수 (10진수, 소문자 e)
%le double 지수 표기법으로 표현한 8byte 크기의 실수 (10진수, 소문자 e)
%Le long double 지수 표기법으로 표현한 long double 타입 크기의 실수 (10진수, 소문자 e)
%E float 지수 표기법으로 표현한 4byte 크기의 실수 (10진수, 대문자 E)
%lE double 지수 표기법으로 표현한 8byte 크기의 실수 (10진수, 대문자 E)
%LE long double 지수 표기법으로 표현한 long double 타입 크기의 실수 (10진수, 대문자 E)
%g float %f 와 %e 둘중에 짧은 길이로 표현되는 서식 지정자를 사용 (소문자 e)
%lg double %lf 와 %le 둘중에 짧은 길이로 표현되는 서식 지정자를 사용 (소문자 e)
%Lg long double %Lf 와 %Le 둘중에 짧은 길이요 표현되는 서식 지정자를 사용 (소문자 e)
%G float %f 와 %e 둘중에 짧은 길이로 표현되는 서식 지정자를 사용 (대문자 E)
%lG double %lf 와 %le 둘중에 짧은 길이로 표현되는 서식 지정자를 사용 (대문자 E)
%LG long double %Lf 와 %Le 둘중에 짧은 길이로 표현되는 서식 지정자를 사용 (대문자 E)
%숫자 숫자만큼 폭을 지정해서 출력한다. (기본 오른쪽 정렬)
%.숫자 온점 (.) 뒤쪽의 숫자만큼 소수점 자리수를 조절한다. (나머지는 반올림)
%- 왼쪽 정렬
%+ 기본적으로 음수일때만 표현되던 부호를 양수에서도 표현한다. (양수일 경우 + 부호)
%# 출력되는 숫자 앞에 진법 표기를 하고 실수의 경우 소수점을 강제로 붙인다.
(%#o , %#x, %#X , %#f, %#e, %#E, %#g, %#G)
%0숫자 숫자만큼 폭을 지정하고 빈 칸을 0으로 채운다.
printf("1. 이름 : %-14s\n", p_friend->name);
printf("2. 나이 : %3d\n", p_friend->age);
printf("3. 키 : %6.2f\n", p_friend->height);
printf("4. 몸무게 : %6.2f\n", p_friend->height);
이전 포스트의 예제 중
- %6.2f : float형 변수를 전체 6으로 설정 후 소숫점 2자리로 설정 즉 000.00
- %-14s : char*형 변수를 왼쪽 정렬하여 14크기 만큼 설정하여 출력
- %3d : int형 변수를 3크기로 설정하여 출력