안녕하세요. 두다스입니다.
이번에는 C언어의 데이터유형에 대해서 알아보겠습니다.
[사진이 흐릿하네요, 클릭하셔서 보시면 될 듯 합니다..]
위 그림에서 빨간색으로 밑줄 친 부분인 int가 바로 C언어 데이터유형중 하나인데요
C언어의 데이터유형들을 좀 더 자세하게 알아보겠습니다.
[표 1-1] 데이터형의 종류와 값의 범위
종류 |
데이터형 | 메모리 크기 | 저장 가능한 값의 범위 | 표현 범위 |
정수형 |
char | 1 Byte ( 8 Bit ) | -128 ~ +127 | 양수, 0, 음수 |
unsigned char | 1 Byte ( 8 Bit ) | 0 ~ +255 | 양수, 0 | |
short | 2 Byte ( 16 Bit ) | -32,768 ~ +32,767 | 양수, 0, 음수 | |
unsigned short | 2 Byte ( 16 Bit ) | 0 ~ +65,535 | 양수, 0 | |
int | 4 Byte ( 32 Bit ) | -2,147,483,648 ~ +2,147,483,647 | 양수, 0, 음수 | |
unsigned int | 4 Byte ( 32 Bit ) | 0 ~+4,294,967,295 | 양수, 0 | |
long | 4 Byte ( 32 Bit ) | -2,147,483,648 ~ +2,147,483,647 | 양수, 0, 음수 | |
unsigned long | 4 Byte ( 32 Bit ) | 0 ~ 4,294,967,295 | 양수, 0 | |
실수형 | float | 4 Byte ( 32 Bit ) | 1.2E-38 ~ 3.4E38 | 양수, 0, 음수 |
double | 8 Byte ( 64 Bit ) | 2.2E-308 ~ 1.8E308 | 양수, 0, 음수 |
데이터형의 종류들을 표로 정리하자면 저런식이 됩니다.
하지만 여기서 char 과 unsigned char 은 문자형 데이터지만 정수형 데이터에 들어가있습니다.
그 이유는 C언어에서는 문자를 ASCII(아스키)코드로 표현하는데 ASCII코드는 7 Bit로 문자를 나타나게 하는데 메모리의 기본단위가
1Byte 이기 때문에 8 Bit 로 문자를 표현합니다.
그런데 이 ASCII 코드라는 것이 2진수이기 때문에 겉으로 볼 때에는 정수와 전혀 차이가 없기때문에 C언어에서는 정수형으로 보게 되는것입니다.
정리하면, C언어에서 문자형 데이터는 1 Byte의 크기를 가지는 정수형 데이터로 생각하면 될 것입니다.
정수형 데이터형들 중에서 보면 unsigned 라는 단어가 붙은 데이터형들이 있는데 이것은 부호없는 데이터형입니다.
'저장 가능한 값의 범위' 에서 보시다시피 unsigned 라는 단어가 붙은 데이터형들은 범위가 모두 0 으로 시작합니다.
따라서 음수는 표현을 못하는 것이지요.
예를 들어서 2006이라는 숫자를 저장하기 위해서는 데이터형을 char과 unsigned char의 범위는 각각 -128~+127, 0~255 이므로
2006이라는 숫자를 저장하지는 못합니다.
따라서 char과 unsigned char을 제외한 나머지 데이터형들인
short, unsigned short, int, unsigned int, long, unsigned long 등의 데이터형으로 선언해준다면 2006이라는 숫자를 저장할 수 있습니다.
p.s. 이 글은 안랩 V스쿨 카페(http://cafe.naver.com/vgeneration)와 블로그(http://dudas.tistory.com)에만 게시합니다.
'Programming > C/C++' 카테고리의 다른 글
11번째, 논리연산자 (0) | 2010.07.11 |
---|---|
12번째, 증가·감소 연산자 (0) | 2010.07.11 |
7번째, gets() 함수. (0) | 2010.06.16 |
Turbo C++ 제 3탄, 입·출력 함수에 대해 알아봅시다. (0) | 2010.06.16 |
8번째, scanf() 함수 주의사항. (0) | 2010.05.02 |