C언어) 자료형

반응형

C언어) 자료형

‘자료형’이란 데이터를 저장하는 형식을 말한다. C언어에서는 기본으로 제공하는 자료형이 있고, 사용자가 직접 정의할 수도 있다. 이번 장에서는 기본제공 자료형에 대해서 알아보자.

 

C언어에서 기본적으로 제공하는 자료형은 크게 세 가지로 나눌 수 있다.

1. 정수형

2. 실수형

3. 문자형

<정수형>

자료형 할당되는 메모리 크기 표현 가능 범위
short 2Byte -32,768 ~ 32,767
unsigned short 2Byte 0 ~ 65,535
int 4Byte -2,147,483,648~2,147,483,647
unsigned int 4Byte 0 ~ 4,294,967,296
long 4Byte -2,147,483,648 ~ 2,147,483,647
unsigned long 4Byte 0 ~ 4,294,967,296

정수형은 소수점 아래는 포함하지 않는 자료형이다. C언어에서 기본적으로 제공하는 정수형 자료형은 여러 가지인데, 할당되는 메모리 크기가 다르기 때문에 상황에 맞는 자료형을 사용해야 한다. 예를 들어, 최대 수량이 1000개인 재고관리 프로그램을 만들 때, short이 아닌 int나 long을 사용한다면, 의미 없는 메모리 낭비가 발생한다. 사용되는 메모리가 늘어나면 프로그램의 속도가 느려지므로 최소한의 메모리를 사용해야 빠른 프로그램을 만들 수 있다.

‘ Byte’ 는 8bit를 묶은 컴퓨터 데이터의 크기를 나타내는 단위이다,
1bit는 0또는 1로 표현할 수 있는 컴퓨터 데이터의 가장 작은 단위이다.
 

<실수형>

자료형 할당되는 메모리 크기 표현 가능 범위 유효자릿수
float 4Byte 1.175494351 E – 38 ~ 3.402823466 E + 38 소수점 6자리
double 8Byte 2.2250738585072014 E – 308 ~ 1.7976931348623158 E + 308 소수점 15자리

모든 프로그래밍 언어에서 실수형 자료형은 오차가 있다. 각각에 할당되는 메모리의 크기인 4Byte와 8Byte로 표현할 수 있는 범위가 한정적이기 때문이다. 만약 float 자료형으로 소수점 7자리 이상의 수를 출력하려 한다면, 소수점 7자리부터는 오차가 발생하여 결과가 바뀌게 될 것이다. 따라서 소수점 7자리부터 15자리까지의 수는 double 자료형을 사용해주자.

마이크로소프트 공식문서에서 long double은 double과 정확히 일치한다고 설명하고 있다. 하지만 리눅스에서 사용하는 GCC를 이용해서 컴파일을 하는 경우라면 long double의 메모리할당은 16Byte로 늘어나고, 표현 가능 범위도 시스템에 따라 더 늘어나게 된다.  만약 double보다 더 정밀한 표현이 필요하다면 GCC를 이용한 컴파일을 찾아보길 바란다.
 

<문자형>

자료형 할당되는 메모리 크기 표현 가능 범위
char 1Byte -128 ~ +127
unsigned char 2Byte 0~255

컴퓨터는 이진수만 인식할 수 있어서, 문자형은 문자 자체가 아닌 표현할 문자의 정수 값을 저장한다. 이 정수 값은 표현하고자 하는 문자에 해당하는 ASCII 코드이다. 표현 가능 범위 역시 이에 해당하는 정수 값의 범위라고 생각하면 된다.

ASCII 코드
‘미국 정보 교환 표준 부호’라고 하며, 초기의 ASCII 코드는 문자를 7비트로 나타낸 것이다. 초기의 ASCII 코드에는 출력 가능한 공백, 52개의 영문 알파벳 대소문자와, 10개의 숫자, 32개의 특수 문자가 있고, 출력 불가능한 33개의 제어 문자들이 있어, 총 128개로 이루어져 있다. 당연히 모든 ASCII 코드를 외울 필요는 없고, 부록에 출력 가능한 ASCII 코드가 있으니, 필요할 때 참고하길 바란다.
 

한 가지 유의할 점은 문자형 자료형에는 단어 또는 문장을 저장하지 못하고, 오직 ‘한 글자’만 저장할 수 있다. 단어 또는 문장, 즉 여러 글자의 조합을 저장하는 방법은 뒤에 ‘문자열’ 파트에서 자세히 다룰 예정이다.

singed VS unsigned
부호 없이 0 이상의 수를 저장할 때 자료형의 이름에 unsigned가 쓰인다. 이때 부호가 있는 자료형에서 signed는 대체로 생략되지만, 프로그램의 목적에 따라 signed를 적어 부호가 있음을 명시해줄 수 있다. 협업 또는 특수 목적 컴퓨터를 프로그래밍할 때가 이 경우이니 상황에 맞게 signed 혹은 unsigned를 적어주면 된다.

 

반응형

'C language' 카테고리의 다른 글

C언어) 입력  (0) 2022.02.12
C언어) 변수명 규칙  (0) 2022.02.12
C언어) 자료형-2  (0) 2022.02.12
C 언어) 이스케이프 시퀀스  (0) 2022.01.10
C 언어) 출력  (0) 2022.01.10