Notice
Recent Posts
Link
«   2026/06   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
Archives
Today
Total
관리 메뉴

One Step Two Step

[C언어 기초] 데이터의 한계와 상수, 그리고 메모리 속의 숫자들 본문

복습/C언어

[C언어 기초] 데이터의 한계와 상수, 그리고 메모리 속의 숫자들

DEVILOW 2026. 2. 25. 17:06
반응형
  • 오버플로우(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; 
  • 정수 표현 방법
    1. 첫번째 비트를 부호 비트로 사용
      • 양수, 음수 덧셈 연산시 결과 부정확
    2.  2의 보수 (표준적인 음수 표현)

  • 실수 표현 방법
    1. 고정 소수점 방식
      • 정수 부분과 소수 부분을 위한 각각의 비트를 할당
      • 큰 수를 표현할 수 없음
    2. 부동 소수점 방식
      • 부호 비트와 가수 부분(실제 숫자값) , 지수 부분(소수점 위치)으로 나누어 비트를 할당
      • 표현할 수 있는 범위가 늘어남 / 부동 소수점 계산은 미세한 오차가 발생할 수 있으므로 정밀한 계산이 필요할 때 주의
  • 아스키 코드(ASCII: American Standard Code for Information Interchange)
    • 문자를 숫자로 표현하기 위한 표준 문자 인코딩 체계
  • 제어문자
    • 사용 방법
      1. 아스키 코드를 직접 사용
      2. 이스케이프 시퀀스 사용
    • 이스케이프 시퀸스

반응형