728x90
반응형
안녕하세요 꾸꾸입니다!

1. 기본적인 차이
타입 | 크기 | 부호(Sign) | 용도 |
char | 1바이트 (보통 8비트) | 구현에 따라 signed 또는 unsigned | 문자 저장 또는 작은 정수 |
int8_t | 1바이트 (8비트 고정) | 항상 signed (-128 ~ 127) | 작은 정수를 저장하는 목적으로 사용 |
2. 타입 정의
📌 char
- char는 C 표준에서 정확히 1바이트 크기로 정의되어 있지만, signed인지 unsigned인지 구현(컴파일러)에 따라 다를 수 있음.
- ASCII 문자 저장에 주로 사용되며, 문자(예: 'A', 'B')와 숫자(예: 65, 66)를 혼용할 수 있음.
char c = 'A'; // ASCII 코드 65
printf("%d\n", c); // 보통 65 출력 (하지만 signed char이면 다르게 해석될 수도 있음)
📌 int8_t
- int8_t는 C99 표준에서 <stdint.h>에 추가된 타입으로, 항상 8비트 크기를 보장하며, signed(부호 있음)이다.
- 작은 정수값을 다룰 때 사용되며, 부호 있는 8비트 정수를 저장하는 데 유용함.
#include <stdint.h>
#include <stdio.h>
int main() {
int8_t num = -120;
printf("%d\n", num); // -120 출력
}
3. 부호(Sign) 차이
char가 signed인지 unsigned인지 애매할 수 있기 때문에, char를 정수로 사용할 때는 명확하게 지정하는 것이 좋음.
char c = 255; // unsigned라면 255, signed라면 -1
int8_t num = 255; // 오버플로우 발생 (255는 signed int8_t의 범위를 초과)
unsigned char uc = 255;
printf("%d\n", uc); // 255 출력
📌 컴파일러에 따라 char의 기본 부호(sign)가 다를 수 있으므로, 정수를 저장할 때는 int8_t 또는 uint8_t을 사용하는 것이 안전함.
4. C 표준에서 char의 동작
- char는 세 가지 종류가 있음:
- char → 컴파일러 설정에 따라 signed char 또는 unsigned char로 해석됨.
- signed char → -128 ~ 127 (항상 부호 있음).
- unsigned char → 0 ~ 255 (항상 부호 없음).
5. 언제 char vs. int8_t를 사용해야 할까?
상황 | char 사용 | int8_t 사용 |
문자를 저장할 때 | ✅ char c = 'A'; | ❌ (부적절함) |
작은 정수를 저장할 때 | ⚠️ (부호 여부가 불명확함) | ✅ (int8_t num = -100;) |
바이너리 데이터 처리 (파일, 네트워크 패킷) | ✅ (unsigned char 사용) | ✅ (uint8_t/int8_t 사용) |
메모리 크기를 정확히 제어해야 할 때 | ❌ (컴파일러 의존적) | ✅ (int8_t/uint8_t 사용) |
✅ 결론
- char는 문자 저장용으로 주로 사용되며, 정수형으로 사용할 경우 signed인지 unsigned인지 명확하지 않다.
- int8_t는 항상 8비트 signed 정수형으로 이식성(포터블) 코드에서 정수를 다룰 때 더 안전하다.
- 정수 값이 명확해야 하는 경우 int8_t 또는 uint8_t를 사용하는 것이 더 좋다! 🚀

728x90
'정보&팁 > IT 기술' 카테고리의 다른 글
I2C와 SMBus 차이점: 비교 분석 (4) | 2025.03.02 |
---|---|
VS Code에서 Tab 키 눌렀을 때 스페이스 개수 조절하는 방법 (5) | 2025.02.26 |
Nvidia, AI 기반 미국 수화(ASL) 학습 플랫폼 "Signs" 출시 (6) | 2025.02.25 |
드론이 혁신을 주도하는 산업 분야 (5) | 2025.02.03 |
[뉴스] 최신 IT 서버와 운영 기술 (5) | 2025.02.01 |