본문 바로가기

Development/C++

C/C++ 자료형

C/C++ 에 존재하는 모든 자료형 개념 총 정리

  • Mar 04, 2018


알고리즘 문제 풀이 시에, 모르는 게 많이 생기게 됩니다. 
특히 자료형에 대한 게 많이 헷갈리는 경우가 존재합니다. 어떤 문제는 long long 자료형을 써야할 때가 있고 (int 형의 범위를 초과해서),
어쩔때는 이러한 long long 을 scanf 나 printf 로 출력해야 할 때도 있겠죠
(저 같은 경우에는 int 나 float 같은 것 만 대충 알고 있었습니다).
이런 경우가 너무 많고 헷갈려서 여러 곳에서 정보를 모아서 정리를 해 보았습니다. 
이상하게 모든 변수에 대해서 모아놓은 포스팅을 찾기가 매우 어렵더라구요. 

▼ 정수 자료형의 크기 및 범위(LLP64/IL32P64, Windows)

 

자료형크기범위비고
char 
signed char
1바이트, 8비트 -128~127  
unsigned char 1바이트, 8비트 0~255  
short 
short int
2바이트, 16비트 -32,768~32,767 int 생략 가능
unsigned short 
unsigned short int
2바이트, 16비트 0~65,535 int 생략 가능
int
signed int
4바이트, 32비트 -2,147,483,648~ 2,147,483,647  
unsigned 
unsigned int
4바이트, 32비트 0~4,294,967,295 int 생략 가능
long
long int
signed long
signed long int
4바이트, 32비트 -2,147,483,648~ 2,147,483,647 int 생략 가능
unsigned long 
unsigned long int
4바이트, 32비트 0~4,294,967,295 int 생략 가능
long long 
long long int 
signed long long 
signed long long int
8바이트, 64비트 -9,223,372,036,854,775,808~
9,223,372,036,854,775,807
int 생략 가능
unsigned long long 
unsigned long long int
8바이트, 64비트 0~18,446,744,073,709,551,615 int 생략 가능

 

 



Microsoft Visual C++ 의 자료형의 형태는 아래와 같다. 

 

Type NameBytesOther NamesRange of Values

int * signed, 
signed int

System dependent
unsigned int * unsigned System dependent

__int8 1 char, 
signed char

–128 to 127
__int16 2 short, 
short int, 
signed short int

–32,768 to 32,767
__int32 4 signed, 
signed int

–2,147,483,648 to 2,147,483,647
__int64 8 none –9,223,372,036,854,775,808 to 9,223,372,036,854,775,807

bool 1 none

false or true
char 1 signed char

–128 to 127
unsigned char 1 none

0 to 255
short 2 short int, 
signed short int

–32,768 to 32,767
unsigned short 2 unsigned short int

0 to 65,535
long 4 long int, 
signed long int

–2,147,483,648 to 2,147,483,647
long long 8 none
(but equivalent to __int64)
–9,223,372,036,854,775,808 to 9,223,372,036,854,775,807

unsigned long 4 unsigned long int 0 to 4,294,967,295

enum * none Same as int

float 4 none 3.4E +/- 38 (7 digits)

double 8 none 1.7E +/- 308 (15 digits)

long double same as double none same as double

wchar_t 2 __wchar_t 0 to 65,535

A variable of __wchar_t designates a wide-character or multibyte character type.
By default wchar_t is a typedef for unsigned short.

 



 

 

▼ printf 이용 시에 사용해야 하는 서식 문자

서식문자 출력 대상(자료형) 출력 형태
%d int 부호 있는 10진수 정수
%u unsigned int 부호 없는 10진수 정수
%o unsigned int 부호 없는 8진수 정수
%x, %X unsigned int 부호 없는 16진수 정수
%f float, double 10진수 방식의 부동소수점 실수
%e, %E float, double 또는 방식의 부동소수점 실수
%g, %G float, double 값에 따라 %f와 %e 사이에서 선택
%c char 값에 대응하는 문자
%s char * 문자열
%p void * 포인터의 주소 값
%n int * 포인터의 주소 값

 

%lu unsigned long 부호없는 long
%llu unsigned
long long
부호없는 long long

 

서식 의미 출력 타입 설명 
%hd short integer unsigned short  부호없는 10진 정수 출력
%d 또는 %i Decimal, Integer int  10진 정수 출력
%ld
long 10진 정수 출력
%lld
long long 10진 정수 출력
%lu
unsigned long 부호없는 10진 정수 출력
%I64d
__int64 10진 정수 출력 
%I64u
unsigned __int64 부호없는 10진 정수 출력 
%o Octal unsigned int 8진 정수 출력
%x 또는 %X heXadecimal unsigned int 16진 정수로 출력.
대문자 X 쓰면 A~F도
대문자 출력
%u Unsigned unsigned int 부호없는 10진 정수 출력
%c Character char, unsigned char 1개의 문자 출력
%s String char*, string, CString 문자열 출력
%f Float float 고정 소수점 형식의 실수 출력
%lf
double 고정 소수점 형식의 실수 출력
%e 또는 %E
float, double 부동 소수점 형식의 실수 출력
%g 또는 %G
float, double %e, %f 중 
더 짧은 형식으로 출력
%p Pointer void * 포인터의 번지값 출력
%n

출력된 문자 개수를
포인터에 대입
%%

%문자 자체를 출력

 

 

 

▼ printf 규칙

 

printf(“%#7.5hd”);
printf(“%            ”);

A B C D

A출력의 형태에 조절을 가하기 위한 특별한 표시문자(#)

좌측 정렬

0 : 빈 공간을 0으로 채우기

+ : 출력 할 수의 크기가 0보다 클 때, + 기호 붙여주기

공백출력 할 수의 크기가 0보다 클 때 수의 앞에 빈칸 하나 출력

# : 8진수, 16진수 출력 시 각각 0과 0x실수의 경우 소수점 이하 출력

B출력에 사용되는 최소한의 폭(7)

C정밀도(5)

D출력데이터의크기정보변경(h)

 

 

 

 

 

 

scanf 이용 시에 사용해야 하는 서식 문자

서식문자 입력대상(자료형) 입력 형태
%d int 부호 있는 10진수 정수
%i int 부호 있는 10진수 정수
%u unsigned int 부호 없는 10진수 정수
%o unsigned int 부호 없는 8진수 정수
%x unsigned int 부호 없는 16진수 정수
%c char 문자
%s char * 문자열
%p void * 주소 값
%f %e %g float 부호 있는 실수
%d
%hd
%hhd
int
short
char
%d
%ld
%lld
int
long
long long
%f
%lf
%Lf
float
double
long double

 

 

 

 

 

▼ 상수에 사용되는 접미사 정리 

 

일단 상수는 변경이 가능한 변수와 달리 변경이 불가능한 수입니다.
상수에는 두 가지 종류가 있는데 바로 정수형 상수와 실수형 상수 입니다.
정수형,실수형 상수는 다음과 같습니다. 

 

  • - 정수형 상수는 int 형으로 표현합니다.
    - 실수형 상수는 double 형으로 표현합니다.

 

즉, 숫자를 변수에 직접 대입할 때, 알아야 할 것이라고 생각하면 됩니다. 

 

1234 같은 것이 정수형 상수 int 이며 (int val = 1234;) 3.14 같은것이 실수형 상수입니다.
실수형으로 선언시 double 형으로 표현됩니다.

여기서 float 형을 쓰게 된다면 (float val2 = 3.14;) 라고 쓰면 3.14는 double 형이 됩니다.
이렇게 쓰면 데이터가 잘려나갈 수 있습니다. (기본형 double 의 범위와 float 범위가 다르다)
이것을 방지하기 위해 상수 뒤에 접미사를 붙혀서 해결할 수 있습니다.

float val2 = 3.14f 위와 같이하면 3.14는 float 형이됩니다.
이처럼 정수형 상수에는 접미사를 붙힐 수 있습니다.
접미사의 종류는 다음과 같습니다.

 

접미사 자료형
U unsigned int
L long
UL unsigned long
LL long long
ULL unsigned long long

 

 

 

 

 
 

C/C++ 에 존재하는 모든 자료형 개념 총 정리 - Easy is Perfect

알고리즘 문제 풀이 시에, 모르는 게 많이 생기게 됩니다. 특히 자료형에 대한 게 많이 헷갈리는 경우가 존재합니다. 어떤 문제는 long long 자료형을 써야할 때가 있고 (int 형의 범위를 초과해서)

melonicedlatte.com

 

 

https://archive.ph/h2yRe

 

'Development > C++' 카테고리의 다른 글

'vsvars32.bat' (VsDevCmd.bat) equivalence of VS2019 and VS2015  (0) 2022.03.17
NetStream (Examples)  (0) 2022.03.16
[C++] _MSC_VER  (0) 2020.12.04
Signed vs Unsigned  (0) 2020.10.31
UTF-8 string to wstring  (0) 2020.09.18