안녕하세요.
이번에는 데이터형에 대한 정리를 해보겠습니다.
1. 데이터형 한 눈에 보기
| C 데이터형 키워드 |
|
| int | 4byte 정수형 |
| short | 2byte 정수형 |
| long | 8byte 정수형 (Windows 는 4byte) |
| char | 1byte 정수형 |
| signed | 부호있는 정수형 |
| unsigned | 부호없는 정수형 |
| _Bool | 1byte 정수형 (이론상 1bit) |
| float | 4byte 부동소수점형 |
| double | 8byte 부동소수점형 |
2. 정수형(Integer)
더보기
1. int
1) 의미
- int 는 부호가 있는 정수(signed integer)을 의미합니다.
- 따라서 반드시 정수여야 하며 양수, 음수, 0 이 될 수 있습니다.
- 일반적으로 int 는 4byte( -2,147,483,648 ~ 0 ~ 2,147,483,647)를 차지합니다.
2. short(short int)
1) 의미
- short 는 부호가 있는 정수(signed short integer)을 의미합니다.
- short 는 int 형보다 더 작은 기억 공간을 사용하는 정수형입니다.
- 일반적으로 short 는 2byte(-32768 ~ 0 ~ 32767)를 차지합니다.
3. long(long int)
1) 의미
- long 은 부호가 있는 정수(signed long integer)를 의미합니다.
- long 은 int 형보다 더 많은 기억 공간을 사용하는 정수형입니다.
- 일반적으로 long 은 8byte(-9,223,372,036,854,775,808 ~ 0 ~ 9,223,372,036,854,775,807)를 차지합니다.(Windows 에서는 호환성 문제로 int 와 크기가 같습니다.)
4. unsigned(unsigned int)
1) 의미
- unsigned 는 부호가 양수인 정수(unsigned integer)을 의미합니다.
- signed(부호가 있는) 정수보다 더 많은 양수를 표현할 수 있습니다.
- 32비트 기준 : signed(-2,147,483,648 ~ 0 ~ 2,147,483,647) / unsigned(0 ~ 4,294,967,295)
5. OverFlow / UnderFlow
1) 발단
- 만약 각 정수형이 나타낼 수 있는 범위를 벗어난 숫자를 사용하게 되면 어떻게 될까요?
프로그램이 터져버릴까요?아쉽게도 그럴 일은 없다고 하네요..
2) OverFlow
- 결론 : 첫 값으로 다시 시작
- int : -2,147,483,648 ~ 2,147,483,647 까지의 정수를 저장할 수 있는데, 2,147,483,647 인 최대값에 +1 이 된 2,147,483,648 이 들어간다면 값은 -2,147,483,648 로 나오게 됩니다.(signed integer 의 첫번째 값은 -2,147,483,648 이기 때문입니다.)
- unsigned int : 0 ~ 4,294,967,295 까지의 정수를 저장할 수 있는데, 4,294,967,295 인 최대값에 +1 이 된 4,294,967,296 이 들어간다면 값은 0 으로 나오게 됩니다.(unsigned integer 의 첫번째 값은 0 이기 때문입니다. )
3) UnderFlow
- 결론 : 마지막 값으로 다시 시작
- short : -32768 ~ 32767 까지의 정수를 저장할 수 있는데 -32768 인 최소값에 -1 이 된 -32769 가 들어간다면 값은 32767 로 나오게 됩니다.(signed short integer 의 마지막 값은 32767 이기 때문입니다.)
- unsigned short : 0 ~ 65535 까지의 정수를 저장할 수 있는데, 0 인 최소값에 - 1 이 된 - 1 이 들어간다면 값은 65535 로 나오게 됩니다.(unsigned short integer 의 마지막 값은 65535 이기 때문입니다.)
4) 안전장치
- 위에서 말한 것처럼 OverFlow 나 UnderFlow 가 발생한 경우 프로그램은
터지지 않고개발자에게 알려주지 않습니다. - 따라서 이러한 경우를 방지하는 안전장치를 항상 마련해두는 것이 중요합니다.
- 그래서 실제 코드 작성할 때는 항상 함수의 가장 위에서 위 OverFlow, UnderFlow 를 검사하는 부분이 있는 경우가 많습니다.
2.1 문자형(Character)
더보기
1. char
1) 의미
- char 는 글자 등의 문자를 나타내는데 사용하는 데이터형입니다.
- char 는 부호가 있는 정수(signed char)를 의미합니다.
- 일반적으로 char 는 1byte(-128 ~ 0 ~ 127)를 차지합니다.
2) 정수형
- char 는 문자를 나타내는데 사용되지만, 기술적으로 봤을 때는 정수형입니다.
- 실제로는 문자를 저장하는 것이 아니라 정수를 저장하기 때문입니다.
- 다만 해당 정수들을 문자로 나타낼 수 있는 약속 코드 값을 사용하는 것 뿐입니다.
- 이러한 약속 코드 값 중 유명한 것이 아스키(ASCII) 코드입니다.
3) 아스키(ASCII) 코드
- 아스키 코드는 0 부터 127 까지의 정수로 이루어져 있습니다.
- 위의 각 정수와 대응되는 문자코드가 있습니다.
- 대표적으로 아스키 코드에서 정수 65는 대문자 A 를 나타냅니다.
※ 마지막에 아스키 표를 첨부합니다.
2.2 부울(Boolean)
더보기
1. _Bool
1) 의미
- _Bool 은 논리값 true 와 false 를 나타내는 값을 저장하는 데이터형입니다.
- 이는 C 의 제어문과 루프에서 자주 사용되는 논리값입니다.
2) 정수형
- _Bool 은 값 1(true)과 0(false)를 사용하기에 기술적으로 정수형입니다.
2.3 고정 폭 정수형
더보기
1. 고정 폭 정수형
1) 발단
- 이전에 long 형의 경우 리눅스는 64비트이지만 윈도우는 32비트를 사용한다고 했습니다.
- 이처럼 운영체제나 시스템마다 데이터형의 크기가 다른 경우가 있습니다.
- 이는 정수형 OverFlow 나 UnderFlow 처럼 정수가 매우 커지거나 작아지는 경우 문제가 생깁니다.
2) 의미
- 어떤 곳이든 같은 크기를 사용할 수 있도록 정의한 데이터형이 고정폭 데이터형입니다.
3) 헤더파일(stdint.h)
- 이러한 고정 폭을 정의하기 위해서는 헤더파일이 필요합니다.
- C 언어에서는 <stdint.h> 헤더파일을 사용합니다.
4) 종류
- int8_t : 8bit(1byte) 크기
- int16_t : 16bit(2byte) 크기
- int32_t : 32bit(4byte) 크기
- int64_t : 64bit(8byte) 크기
2.4 정수표현
더보기
1. 정수표현이란?
- C 언어에서 정수표현을 하는경우 사용하는 정수형 상수는 10진수입니다.
- 하지만 상수를 정의할 때에는 8진수나 16진수로 표현되기도 합니다.
- 이 경우 표현방법이 다릅니다.
2. 8진수
int num = 16; // 10진수 16
int num = 020; // 8진수 16
- 접두사에 0을 붙입니다.
3. 16진수
int num = 16; //10진수 16
int num = 0x10; //16진수 16
- 접두사에 x0을 붙입니다.
3. 부동소수점형(float, double)
더보기

1. 부동소수점형이란?
1) 의미
- 부동소수점형은 수학에서 말하는 실수(0.1, 3.16E7 등)를 말합니다.
2) 구조

- 부동소수점형은 부호부와 지수부와 가수부를 가지고 있습니다.
- 부호부는 양수와 음수인지를 판별합니다.
- 지수부는 소수점의 위치를 결정합니다.
- 가수부는 실제 수를 저장합니다.
2. float
1) 크기
- 일반적으로 크기는 4byte(32bit)입니다.
2) 구조
- 1bit -> 부호부
- 8bit -> 지수부
- 23bit -> 가수부
3. double
1) 크기
- 일반적으로 크기는 8byte(64bit)입니다.
2) 구조
- 1bit -> 부호부
- 11bit -> 지수부
- 52bit -> 가수부
+) ASCII 표
더보기
1. 제어문자
| 10진수(DEC) | 문자 | 의미 |
| 0 | NUL | NULL |
| 1 | SOH | 헤더시작 |
| 2 | STX | 본문 시작 |
| 3 | ETX | 본문 종료 |
| 4 | EOT | 전송 종료 |
| 5 | ENQ | 응답 요구 |
| 6 | ACK | 긍정 응답 |
| 7 | BEL | 경고음 |
| 8 | BS | 백스페이스 |
| 9 | HT | 수평 탭 |
| 10 | LF | 개행 |
| 11 | VT | 수직 탭 |
| 12 | FF | 다음 페이지 |
| 13 | CR | 복귀(캐리지 리턴) |
| 14 | SO | 확장문자 시작 |
| 15 | SI | 확장문자 종료 |
| 16 | DLE | 전송 제어 확장 |
| 17 | DC1 | 장치 제어 1 |
| 18 | DC2 | 장치 제어 2 |
| 19 | DC3 | 장치 제어 3 |
| 20 | DC4 | 장치 제어 4 |
| 21 | NAK | 부정 응답 |
| 22 | SYN | 동기 |
| 23 | ETB | 전송블록 종료 |
| 24 | CAN | 무시 |
| 25 | EM | 매체 종료 |
| 26 | SUB | 치환 |
| 27 | ESC | 제어기능 추가 |
| 28 | FS | 파일경계 할당 |
| 29 | GS | 레코드 그룹경계 할당 |
| 30 | RS | 레코드 경계 할당 |
| 31 | US | 장치 경계 할당 |
| 127 | DEL | 삭제 |
2. 숫자 및 특수문자
| 10진수(DEC) | 문자 |
| 32 | SPACE |
| 33 | ! |
| 34 | " |
| 35 | # |
| 36 | $ |
| 37 | % |
| 38 | & |
| 39 | ' |
| 40 | ( |
| 41 | ) |
| 42 | * |
| 43 | + |
| 44 | , |
| 45 | - |
| 46 | . |
| 47 | / |
| 48 | 0 |
| 49 | 1 |
| 50 | 2 |
| 51 | 3 |
| 52 | 4 |
| 53 | 5 |
| 54 | 6 |
| 55 | 7 |
| 56 | 8 |
| 57 | 9 |
| 58 | : |
| 59 | ; |
| 60 | < |
| 61 | = |
| 62 | > |
| 63 | ? |
| 64 | @ |
| 91 | [ |
| 92 | \ |
| 93 | ] |
| 94 | ^ |
| 95 | _ |
| 96 | ' |
| 123 | { |
| 124 | | |
| 125 | } |
| 126 | ~ |
3. 영어 대문자
| 10진수(DEC) | 문자 |
| 65 | A |
| 66 | B |
| 67 | C |
| 68 | D |
| 69 | E |
| 70 | F |
| 71 | G |
| 72 | H |
| 73 | I |
| 74 | J |
| 75 | K |
| 76 | L |
| 77 | M |
| 78 | N |
| 79 | O |
| 80 | P |
| 81 | Q |
| 82 | R |
| 83 | S |
| 84 | T |
| 85 | U |
| 86 | V |
| 87 | W |
| 88 | X |
| 89 | Y |
| 90 | Z |
4. 영어 소문자
| 10진수(DEC) | 문자 |
| 97 | a |
| 98 | b |
| 99 | c |
| 100 | d |
| 101 | e |
| 102 | f |
| 103 | g |
| 104 | h |
| 105 | i |
| 106 | j |
| 107 | k |
| 108 | l |
| 109 | m |
| 110 | n |
| 111 | o |
| 112 | p |
| 113 | q |
| 114 | r |
| 115 | s |
| 116 | t |
| 117 | u |
| 118 | v |
| 119 | w |
| 120 | x |
| 121 | y |
| 122 | z |
'C > Study' 카테고리의 다른 글
| C 언어 : 6. 루프 제어문 (0) | 2026.05.19 |
|---|---|
| C언어 : 5. 연산자 (0) | 2026.05.19 |
| C언어 : 4. 문자열과 입출력 (0) | 2026.05.18 |
| C언어 : 2. 첫 프로그램으로 보는 구조 (0) | 2026.05.18 |
| C언어 : 1. C 언어에 대하여 (0) | 2026.05.17 |
