본문 바로가기
  • Always Awake
프로그래밍,Tools/C,C++

[C/C++] C언어의 기본 자료형/데이터 타입(Data Type) 종류

by NerdyBoy 2022. 2. 20.

데이터 타입(Data Type)은 변수(Variable)에 저장될 데이터의 형식을 나타내는 것이다.

그럼 C/C++ 에서 사용되는 데이터 타입의 종류와, 그 크기 및 기억 범위에 대해 알아보자.

 


데이터 타입

종류 데이터 타입 크기 기억 범위
문자 char 1Byte -128 ~ 127
부호없는 문자형 unsigned char 1Byte 0 ~ 255
정수 short 2Byte -32,768 ~ 32,767
int 4Byte -2,147,483,648 ~ 2,147,483,647
long 4Byte -2,147,483,648 ~ 2,147,483,647
long long 8Byte -9,223,372,036,854,775,808 ~
9,223,372,036,854,775,807
부호없는 정수형 unsigned short 2Byte 0 ~ 65,535
unsigned int 4Byte 0 ~ 4,294,967,295
unsigned long 4Byte 0 ~ 4,294,967,295
실수 float 4Byte 1.2×10⁻³⁸~ 3.4×10³⁸
double 8Byte 2.2×10⁻³⁰⁸ ~ 1.8×10³⁰⁸
long double 8Byte 2.2×10⁻³⁰⁸ ~ 1.8×10³⁰⁸

 

1. 용어

기억 범위

각 데이터 타입이 표현할 수 있는 값의 범위를 뜻한다. 기억 범위를 넘어선 값을 저장할 경우 오버플로우가 발생해 전혀 다른 값이 저장될 수 있다.

 

오버플로우(Overflow) : 표현할 수 있는 최대 범위보다 큰 수를 저장할 때 발생하는 현상으로, 최상위 비트(MSB)를 벗어난 데이터가 인접 비트를 덮어써 잘못된 값이 저장될 수 있다.

오버플로우 발생으로 엉뚱한 값이 저장된 경우

int 타입의 overflow 라는 변수에 범위를 초과하는 값을 저장한 경우이다. 이렇게 저장할 경우 잘못된 값이 저장되는것을 볼 수 있다.

 

unsigned

부호없는 문자형, 부호없는 정수형 앞에는 unsigned가 붙는다. unsigned 타입일 경우 음의 값의 범위까지 양의 범위에 합한 저장공간을 갖게된다. Default 타입은 signed로, 이 경우 signed가 생략 되어있고 음의 값까지 저장이 가능하다. 

또 signed 타입에서 양의 범위는 음의 범위에서 -1 을한 범위가 된다.

 

int 타입과 long 타입이 같은 이유

운영체제 마다 int 와 long의 크기가 달라지기 때문이다. 16bit 윈도우 운영체제에서 int 타입은 2Byte, long 은 4Byte 였지만,

32bit 와 64bit 운영체제에서 두타입모두 4Byte로 같아지게 된 것.

윈도우가 아닌 다른 운영체제에서는 long타입의 메모리 크기가 8Byte인 경우도 있다.

 

 

 

 

2. 문자형 타입

컴퓨터는 2진수로 값을 인식하기 때문에, 문자또한 숫자로 표현해야 한다.

이를 위해 사용되는 것이 보통 아스키 코드(ASCII) 이다.

 

아스키코드는 7비트의 문자 인코딩 방식으로, 총 128개의 문자를 표현할 수 있다.

 

예제

결과

문자열을 입력받을 때는 배열 크기를 명시해주도록 한다. 예제에서는 문자열과 문자하나를 출력해봤다.

출력할때는 문자하나일 경우 %c, 문자열일 경우 %s 서식을 사용한다.

 

 

 

 

3. 정수형 타입

정수형은 short, int, long 등을 사용할 수 있다. 실수가 아닌 정수만 저장가능하고, 실수를 저장할경우 오류가 난다. 또 unsigned 가 명시된 타입에는 음의 정수를 입력할 수 없다.

 

예제

결과

데이터 타입에 따라 크기와 기억범위가 다르므로, 저장할 숫자의 크기에 따라 유연하게 데이터 타입을 선택해주도록 한다. 

일반적인 정수형 출력에는 %d, long long 형 출력에는 %lld 를 사용한다. 입/출력 서식에 대한 자세한 사항은 따로 정리한다.

 

 

 

 

4. 실수형 타입

C언어에서 소수부나 지수가 있는 수는 실수형 타입으로 저장한다. float은 소수점 아래 6자리, double은 소수점 아래 16자리 까지 저장가능 하고, 벗어나게 되면 엉뚱한 값이 저장된다. 아래는 float 과 double 형을 사용한 예제이다.

 

예제

결과

 

float 은 소수점아래 6자리를 넘어가면서 엉뚱한 값이 저장된 것을 볼 수 있고, double은 15자리를 넘어가면서 다른값이 저장되었다. float은 표현범위가 너무 좁아 최근에는 하드웨어가 좋아지면서 double타입을 많이 사용한다.

 

 


 

 

자격증 공부를 하면서데이터 타입에 대해 정리해봤는데,

C/C++ 을 안쓴지너ㅓ 어 어 무 오래되어서 헤더 선언도 검색해서 했다 ㅋㅋㅋㅋ

그리고 맥에는 C/C++ 가 안깔려있어서 주피터 노트북을 이용했다.

굉 장 히 편하다. 파이썬 뿐만 아니라 C랑 자바스크립트도 설치할 수 있다!

댓글