[C] 서식 지정자에 대하여

김태희·2023년 11월 13일
0
post-thumbnail

서식 시정자

내가 공부할때 참고하는 책은 메모리 관리를 중요하게 생각해
메모리를 최소한으로 사용하려다보니 자료형이 자연스레 많아지게 되었고
결국엔 서식 지정자가 헷갈리는 경우가 많았다.

알아보니, 서식 지정자를 구체적으로 설정해야 잠재적인 오류를 줄일 수 있다고 한다 !

이를 다 외울 필요는 없겠지만 자주 쓰이는 지정자들은 어느정도 외워놓고
이런 것도 있다는 정도만 알아두면 요긴하게 쓰일 것 같다.

기본적인 서식 지정자

자주 사용

%c char 문자

%s char*, char[] 문자열

%hd short 부호를 포함한 2byte 크기의 정수 (10진수)

%d int 부호를 포함한 int 타입 크기의 정수 (10진수)

%ld long 부호를 포함한 long 타입 크기의 정수 (10진수)

%lld long long 부호를 포함한 8byte 크기의 정수 (10진수)



%hu unsigned short 부호를 포함하지 않는 2byte 크기의 정수 (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크기로 설정하여 출력

0개의 댓글