DataType(자료형)

이인혁·2024년 4월 30일

C

목록 보기
2/23
post-thumbnail

DataType 이란?

프로그래밍 언어에서 여러종류의 데이터를 식별하는 분류를 말합니다.
DataType은 해당 자료형에 대한 가능한 값, 해당 자료형에서 수행을 마칠 수 있는 명령들, 데이터의 의미, 해당 자료형의 값을 저장하는 방식을 결정합니다.
간단하게 말하자면, '데이터를 표현하는 방법' 이라고 표현할 수 있습니다.
C언어에서는 기본 자료형참조 자료형이 있습니다. 이번에는 기본 자료형에 대해서만 설명하려고 합니다.

1. DataType의 종류

C언어는 여러 가지의 자료형을 정의하고 있습니다. 이렇듯 기본적으로 제공되는 자료형을 가리켜 '기본 자료형'이라 하며, 그 종류와 특징은 다음과 같습니다.
-정수형

자료형범위출력형식
int((4byte), System dependent)-2,147,483,648 ~ 2,147,483,647%d
short(2byte)-32,768 ~ 32,767%d
long(4byte)-2,147,483,648 ~ 2,147,483,647%ld
long long(8byte)-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807%lld
unsigned int((4byte), System dependent)0 ~ 4,294,967,295%u
unsigned short(2byte)0 ~ 65,536%u
unsigned long(4byte)0 ~ 4,294,967,295%lu
unsigned long long(8byte)0 ~ 18,446,744,073,709,551,615%llu

일반적으로 CPU가 처리하기에 가장 적합한 크기의 정수 자료형을 int로 정의합니다. 따라서 int형 연산의 속도가 다른 자료형의 연산속도에 비해서 동일하거나 더 빠릅니다.

그럼에도 정수를 표현할 수 있는 자료형의 종류가 다양한 이유는 공간 이용의 효율을 높이기 위함입니다.

예를 들어, 숙소를 구할 때 2명이서 잘건데 10인방을 빌리면 비효율적입니다. 하지만 2명이서 2인방을 빌리면 가장 효율적입니다.

이처럼, 어떤 정수를 표현할 때 효율적인 자료형을 쓰면, 메모리 공간을 효율적으로 사용할 수 있습니다.

-실수형

자료형범위출력형식
float(4byte)-3.4 x 10^38 ~ 3.4 x 10^38%f
double(8byte)-1.8 x 10^308 ~ 1.8 x 10^308%lf
long double(8byte 이상)double 이상의 표현범위%llf

실수 자료형의 선택에 있어서 가장 중요한 요소는 정밀도입니다. 여기서 말하는 정밀도는 '오차가 발생하지 않는 소수점 이하의 자릿수'를 뜻합니다.

정수 자료형에서는 int를 보편적으로 선택하듯이, 실수 자료형에서도 보편적으로 double형(과거에는 float형)을 사용합니다. 왜냐하면 float보다 정밀도가 높으면서도 long double보다는 부담이 덜 되기 때문입니다.

-문자형

자료형범위출력형식
char(1byte)-128 ~ 127%c
unsigned char(1byte)0 ~ 255%c

C언어는 미국 표준 협회에 의해서 제정된 아스키 코드라는 표준을 선택해서 문자를 표현한다.

(아스키 코드표)

2. DataType선언

DataType선언을 하고 출력해보기.

코드

#include <stdio.h>
int main() {
    int ab = 20;
    int cb = 30;
    printf("ab = %d, cb = %d\n", ab, cb);
    float dd = 1.3f;
    double ee = 3.4f;
    printf("dd = %f, ee = %lf\n", dd, ee);
    char AA = 65;
    unsigned BB = 66;
    printf("AA = %c, BB = %c\n", AA, BB);
    return 0;
}

결과

ab = 20, cb = 30
dd = 1.300000, ee = 3.400000
AA = A, BB = B

DataType의 경계값 출력해보기.

코드

#include <stdio.h>
int main() {
    short a;
    long b;
    int c;
    unsigned short d;
    unsigned long e;
    unsigned int f;
    float g;
    double h;
    char i;
    unsigned char j;
    a = 32767;
    b = 2147483647;
    c = 2147483647;
    d = 65535;
    e = 4294967295;
    f = 4294967295;
    g = 3.4E-38;
    h = 1.79769e-308;
    i = 127;
    j = 255;
    printf("a=%d\n b=%ld\n c=%d\n d=%u\n e=%lu\n f=%u\n g=%.40f\n h=%.308lf\n i=%c\n j=%c\n", a, b, c, d, e, f, g, h, i, j);
    return 0;
}

결과

 a=32767
 b=2147483647
 c=2147483647
 d=65535
 e=4294967295
 f=4294967295
 g=0.0000000000000000000000000000000000000340
 h=0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002
 i=DEL
 j=

참고

  • float형과 double형 출력형식 중간에 .(n)를 넣으면 소수점 (n)자릿수만큼 출력해준다.
  • unsigned char 자료형은 127이하로는 아스키코드로 사용할 수 있다. 하지만 보통 정수형으로 많이쓴다.
profile
게임개발공부블로그

0개의 댓글