C언어를 배우면 다양한 형태의 자료형을 볼 수 있다.
자주 사용하는 정수 자료형은 char과 int가 있다.
자료형 | 크기 | 범위 | 비고 |
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 생략 가능 |
- 부호 있는 정수는 음수를 포함하기때문에 그만큼 양수의 범위가 줄어든다. <- 무슨 말인지 참 어렵다. 그래도 이해할려고 노력해보자
정수 자료형을 코드로 사용해보자.
char num1 = -10; // 1바이트 부호 있는 정수형으로 변수를 선언하고 값 할당
short num2 = 30000; // 2바이트 부호 있는 정수형으로 변수를 선언하고 값 할당
int num3 = -1234567890; // 4바이트 부호 있는 정수형으로 변수를 선언하고 값 할당
long num4 = 1234567890; // 4바이트 부호 있는 정수형으로 변수를 선언하고 값 할당
long long num5 = -1234567890123456789; // 8바이트 부호 있는 정수형으로 변수를
// 선언하고 값 할당
// char, short, int는 %d로 출력하고 long은 %ld, long long은 %lld로 출력
printf("%d %d %d %ld %lld\n", num1, num2, num3, num4, num5);
- char 자료형은 1바이트 크기로 - 부호가 있는 정수형으로 변수 선언에 값을 할당해주었다.
- short 자료형은 2바이트 크기로 int를 생략하여 정수형으로 변수 선언에 값을 할당해주었다.
- int 자료형은 4바이트 크기로 정수형 변수 선언에 값을 할당해주었다.
- long 자료형은 4바이트 크기로 정수형 변수에 - 부호가 있는 변수 선언에 값을 할당해주었다.
- long long 자료형은 8바이트 크기로 - 부호가 있는 변수 선언에 값을 할당해주었다.
이렇게 보면 무슨 말인지 모르겠지만 위에 표를 참고하면서 정수 자료형에 크기와 범위를 따져가면서 변수를 선언해주면 된다.
만약
범위가 정해져있지만 값을 넘게 저장하거나 적게 저장할 경우 어떻게 될까
우린 이것을 오버플로우, 언더플로우 라고 말한다.
오버플로우에 예를 보자
char num1 = 128; // char에 저장할 수 있는 최댓값 127보다 큰 수를 할당
// 오버플로우 발생
- char에 저장 가능한 최대값은 127이다 이보다 더 큰 128을 저장하고 출력하면 -128이 출력
- char 범위에 가장 작은 -128이 출력된다. 이와같이 범위보다 넘는 값을 저장하면 범위에 시작 최소값이 출력된다.
반대로 언더플로우에 예를 보자
char num1 = -129; // char에 저장할 수 있는 최소값 -128보다 작은 수를 할당
// 언더플로우 발생
- char 저장 값 최소 범위 -128보다 작은 -129를 저장해서 출력하면 127이 출력
- char 범위에 가장 큰 127이 출력된다. 이와같이 범위보다 작은 값을 저장하면 범위에 끝 최대값이 출력된다.
'프로그래밍 > C 기본문법' 카테고리의 다른 글
UNIT 9. 문자 자료형 사용하기 (0) | 2021.02.20 |
---|---|
UNIT. 8 실수 자료형 (0) | 2021.02.20 |
UNIT 5. 변수 (0) | 2021.02.18 |
UNIT 4. 세미콜론, 주석, 중괄호, 들여쓰기 (0) | 2021.02.18 |
UNIT 3. Hello, world 출력하기 (0) | 2021.02.16 |