[C언어] 자료형 출력 서식 문자 정리
본문 바로가기
C++/C Basic

[C언어] 자료형 출력 서식 문자 정리

by Macgyvering2 2020. 6. 20.

들어가며

C언어에서 데이터를 출력할 때, 같은 데이터를 출력하더라도 다르게 표시되는 일들이 있다.

예를 들어 숫자 10을 가지고도 10진수, 8진수, 16진수, 문자 등으로 다양하게 출력할 수 있다.

이는 컴퓨터의 내부적인 연산은 2진수로 일어나고, 사용자에게 보여줄 때만 출력 형식에 맞추어 보여주기 때문이다.

 

오늘은 자료형별 출력 형식에 대해서 정리하고자 한다.

 

자료형 및 출력 형식 표

구분 자료형 바이트 표현 범위 출력 형식
(서식 문자)
의미 사용 예시 결과




char 1 -128~127 %c 1개 문자 출력 char c = 97;
printf("%c", c);
a
%d 10진 정수 출력 char c = 97; 
printf("%d", c);
97
unsigned char 1 0~255 %c 1개 문자 출력 unsigned char c = 97; 
printf("%c", c);
a
%u 부호없는 10진 정수 출력 unsigned char c = 200; 
printf("%d", c);
200
short 2 -32,768~
32,767
%d, %hd 10진 정수 출력 short s = 32000;
printf("%hd", s);
32000
unsigned short 2 0~65,535 %u, %hu 부호없는 10진 정수 출력 unsigned short s=60000;
printf("%hu", s);
60000
int 4 -2,147,483,648~
2,147,483,647
%d 10진 정수 출력 int i = 1234567890;
printf("%d", i);
1234567890
unsigned int 4 0~4,294,967,295 %u 부호없는 10진 정수 출력 unsigned int i=3234567890U;
printf("%u", i);
3234567890
long 4 -2,147,483,648~
2,147,483,647
%ld(%d) 10진 정수 출력 long l = 1234567890L; 
printf("%ld", l);
1234567890
unsigned long 4 0~4,294,967,295 %lu(%u) 부호없는 10진 정수 출력 unsigned long l=3234567890UL; 
printf("%lu", l);
3234567890
long long 8 -9,223,372,036,
854,775,808~

9,223,372,036,
854,775,807
%lld long long형
10진 정수 출력
long long ll = 9223372036854775807LL;
printf("%lld", ll);
9223372036854775807
unsigned
long long
8 0~18,446,744,073,
709,551,615
%llu 부호없는 long long형 10진 정수 출력 unsigned long long ll =
9223372036854775808ULL;
printf("%llu", ll);
9223372036854775808




float 4 1.175494e-38~
3.402823e+38
%f float형
소수 출력
float f = 3.1415926535f;
printf("%1.7f", f);
3.1415927
double 8 2.225074e-308~
1.797693e+308
%lf double형
소수 출력
double lf = 
3.141592653589793238;
printf("%1.15lf", lf);
3.141592653589793
long double 8 2.225074e-308~
1.797693e+308
%Lf long double형
소수 출력
long double llf = 
3.141592653589793238l;
printf("%1.15llf", llf);
3.141592653589793

 

주목해야 할 점

  1. 어차피 아스키 코드의 문자는 7비트 인코딩 방식이기 때문에 0~127로 표현되며,
    unsigned char를 쓰던 signed char를 쓰던 똑같이 출력이 가능하다.
  2. int와 long은 동일한 메모리를 잡아먹고 동일한 결과를 보여준다.
    하드웨어나 OS 의존성이 있지 않는 이상은 같은 자료형이라고 봐도 무방하다.
    double과 long double과의 관계도 비슷하다.
  3. 리터럴을 표기해줘야 하는 형들이 있다.
    리터럴은 데이터의 크기를 접미사를 이용하여 명시적으로 표기해주는 기능이다.
    float f = 3.1415926535f;에서 f와 같은 것이다.

 

데이터 타입 리터럴
unsigned int U
long L
unsigned long UL
long long LL
unsigned long long ULL
float f
double 없음
long double
Lf

double형은 리터럴이 있을 것 같지만 없다는 것을 기억하자.

 

참고) 아스키 코드 표

https://ko.wikipedia.org/wiki/ASCII

 

 

댓글