One Step Two Step
[C언어 기초] 데이터의 한계와 상수, 그리고 메모리 속의 숫자들 본문
반응형
- 오버플로우(overflow): 변수가 나타낼 수 있는 범위를 넘는 숫자를 저장하려고 할 때 발생
- 언더플로우(underflow): 자료형이 표현할 수 있는 범위보다 작아지면 발생
/* overflow */
#include <stdio.h>
#include <limits.h> // 자료형의 최댓값, 최솟값이 정의된 헤더
int main(void) {
short s_money = SHRT_MAX; // 최대값 32,767
unsigned short u_money = USHRT_MAX; // 최대값 65,535
s_money = s_money + 1; // 32767 + 1 = ?
printf("s_money = %d\n", s_money); // 결과: -32768 (최소값으로 회전)
u_money = u_money + 1; // 65535 + 1 = ?
printf("u_money = %d\n", u_money); // 결과: 0 (최소값으로 회전)
return 0;
}
/* underflow */
#include <stdio.h>
#include <limits.h> // 자료형의 최댓값, 최솟값이 정의된 헤더
int main(void) {
// 1. 부호 없는 정수 (unsigned short: 0 ~ 65535)
unsigned short u_min = 0;
u_min = u_min - 1;
printf("unsigned short 언더플로우: %u\n", u_min); // 결과: 65535
// 2. 부호 있는 정수 (short: -32768 ~ 32767)
short s_min = SHRT_MIN; // -32768
s_min = s_min - 1;
printf("short 언더플로우: %d\n", s_min); // 결과: 32767
return 0;
}
- 정수와 상수
- 숫자를 적으면 기본적으로 int형 (예) sum = 123; // 123은 int형
- 상수의 자료형 명시 방법
| 접미사 | 자료형 | 예 |
| u or U | unsigned int | 123u or 123U |
| l or L | long | 123l or 123L |
| ul or UL | unsigned long | 123ul or 123UL |
- 10진법, 8진법, 16진법
- 8진법 - 012=1×8¹+2×8⁰ =10
- 16진법 - 0xA16 =10×16⁰ =10

- 기호 상수(symbolic constant): 기호를 이용하여 상수를 표현한 것
- 가독성이 높아지고, 값을 쉽게 변경 O
(예)
#define PI 3.141592 - 방법1. 전처리기 사용
area = 3.141592 * radius * radius;
area = PI * radius * radius;
const double TAX_RATE = 0.15; - 방법2. const 사용 (권장)
income = salary - 0.15 * salary;
income = salary - TAX_RATE * salary;
- 정수 표현 방법
- 첫번째 비트를 부호 비트로 사용
- 양수, 음수 덧셈 연산시 결과 부정확
- 2의 보수 (표준적인 음수 표현)
- 첫번째 비트를 부호 비트로 사용

- 실수 표현 방법
- 고정 소수점 방식
- 정수 부분과 소수 부분을 위한 각각의 비트를 할당
- 큰 수를 표현할 수 없음

- 부동 소수점 방식
- 부호 비트와 가수 부분(실제 숫자값) , 지수 부분(소수점 위치)으로 나누어 비트를 할당
- 표현할 수 있는 범위가 늘어남 / 부동 소수점 계산은 미세한 오차가 발생할 수 있으므로 정밀한 계산이 필요할 때 주의

- 부호 비트와 가수 부분(실제 숫자값) , 지수 부분(소수점 위치)으로 나누어 비트를 할당
- 고정 소수점 방식
- 아스키 코드(ASCII: American Standard Code for Information Interchange)
- 문자를 숫자로 표현하기 위한 표준 문자 인코딩 체계
- 제어문자
- 사용 방법
-
아스키 코드를 직접 사용
-
이스케이프 시퀀스 사용
-
- 이스케이프 시퀸스
- 사용 방법

반응형
'복습 > C언어' 카테고리의 다른 글
| [C언어 기초] 반복문 "while" / "do...while" / "for" (0) | 2026.02.28 |
|---|---|
| [C언어 기초] "if", "switch" 그리고 "goto"라는 조건문 (0) | 2026.02.27 |
| [C언어 기초] 수식과 연산자 (0) | 2026.02.26 |
| [C언어 기초] 변수, 함수, 그리고 입출력 완벽 정리 (1) | 2026.02.24 |
| [C언어 기초] 01. Hello World 출력과 코드 구조 완벽 이해하기 (0) | 2026.02.23 |