언어(Language)/C

[C언어] 자료형 정리 및 예시(Data type in C language)

잇트루 2021. 9. 7. 00:32
반응형

자료형(Data type)이란 데이터의 특징을 결정하는 변수의 선언을 뜻합니다. 따라서 변수를 선언함과 동시에 변수에 값을 저장하기 위한 정수, 실수, 문자 등의 데이터 특징을 지정해 주어야 합니다.

 

또한, 프로그래밍 언어에서는 자료형의 세분화를 통해 주기억 장치(메모리)의 낭비를 최소화하고 있습니다.

예를 들어 날짜와 같이 크기가 작은 데이터를 큰 자료형에 저장하게 된다면 낭비되는 데이터가 많아질 것입니다.

그렇기 때문에 같은 정수 또는 실수를 다루더라도 크기가 다른 자료형이 존재합니다.

 

C언어의 기본 자료형은 다음과 같습니다.

특별히 자료형을 지정하지 않은 경우 상수에 적용되는 자료형은 char, int, double이며 이를 기본 자료형이라 칭합니다.

 

signed와 unsigned는 부호가 있고 없음을 나타냅니다.

unsigned는 음수를 표현할 수 없지만 signed의 양수 범위보다 2배 큰 양수를 표현할 수 있으며,

signed는 unsigned보다 적은 양수를 표현할 수 있으나 음수의 표현이 가능합니다.

 

다음과 같이 자료형에 맞게 변수를 선언할 수 있습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>

int main() {
    short a = -32768;
    int b = -5;
    long c = -1000000000;
    long long d = 10000000000;
    unsigned int e = 4294967295;
    char f = a;
    float g = 3.14;
    double h = 3.14;
    long double i = 1.2345678;
 
    return 0;
}
cs

 

범위를 벗어날 경우에는 정상적인 작동을 하지 못하게 됩니다.

1
2
3
4
5
6
7
8
#include <stdio.h>

int main() {
    short a = 32769;
 
    printf("short a = %d\n", a);
 
    return 0;
}
cs

다음과 같이 short a에 32769를 입력하여 결과를 출력하면 -32767이 출력되는 상황이 일어나게 됩니다.

 

또한, 문자인 char의 경우 문자 1개를 저장하기 위한 기본 문자 자료형으로 한글의 경우 2바이트로 표현되기 때문에 한글은 char로 표현할 수 없습니다.

1
2
3
4
5
6
7
#include <stdio.h>

int main() {
    char c = 가;
    printf("%c", c);
 
    return 0;
}
cs

다음과 같이 빌드 오류가 발생하게 됩니다.

 

 

한 가지 헷갈리실 수 있는 것이 unsigned입니다. 만약 unsigned int a에 음수를 넣고 출력한다면 어떻게 될까요?

1
2
3
4
5
6
7
8
9
#include <stdio.h>
 
int main() {
    unsigned int a = -1;
 
    printf("%d", a);
 
    return 0;
}
cs

 

 

다음과 같이 -1이 잘 출력된다고 착각할 수도 있습니다. 하지만 이것은 정상적인 방법이 아닙니다.

 

 

unsigned int로 선언하였으면 출력할 때는 %d가 아닌 %u로 출력을 해야 합니다.

1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
 
int main() {
    unsigned int a = -1;
 
    printf("%u", a);
 
    return 0;
}
cs

다음과 같이 앞서 범위를 초과하였을 때 나타나는 결과와 비슷하게 나타나게 됩니다.

 

이는 아무런 문제 없이 사용하게 된다면 나중에 연산과정에서 치명적인 문제를 유발할 수 있으니 주의해야 합니다.

 

 

 

반응형