Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C 언어 문자 산술(Character Arithmetic) 완벽 정리: 원리와 예제

C 언어에서 문자 산술(Character Arithmetic)은 문자에 덧셈, 뺄셈과 같은 산술 연산을 적용하는 기법입니다. 주로 문자열을 조작하거나 처리할 때 활용되며, C 프로그래밍에서 매우 유용하게 쓰이는 개념입니다.

문자 산술의 동작 원리

문자에 산술 연산을 수행하면, 컴파일러는 해당 문자를 자동으로 정수 값으로 변환합니다. 이때 사용되는 정수 값이 바로 각 문자에 할당된 ASCII 코드 값입니다. 예를 들어 소문자 'm'의 ASCII 값은 109입니다.

즉, 문자는 내부적으로 숫자로 취급되기 때문에 다음과 같은 연산이 가능합니다.

  • 문자 + 정수 → 해당 ASCII 값에서 정수만큼 증가한 새로운 문자
  • 문자 − 정수 → 해당 ASCII 값에서 정수만큼 감소한 새로운 문자
  • 문자 − 문자 → 두 문자의 ASCII 값 차이 (정수)

C 언어 문자 산술 예제

다음은 C 언어에서 문자 산술을 사용하는 대표적인 예제 코드입니다.

#include <stdio.h>

int main(){
    char s = 'm';
    char t = 'z' - 'y';

    printf("%d\n", s);
    printf("%c\n", s);
    printf("%d\n", (s+1));
    printf("%c\n", (s+1));
    printf("%d\n", (s-1));
    printf("%c\n", (s-1));
    printf("%d\n", t);
    // printf("%c", t);

    return 0;
}

실행 결과

109
m
110
n
108
l
1

출력 결과 상세 분석

실행 결과를 하나씩 살펴보면 다음과 같습니다.

1. 문자 'm'의 출력

%d 서식 지정자로 출력하면 문자 'm'의 ASCII 값인 109가 출력되고, %c로 출력하면 문자 그대로 m이 출력됩니다.

2. s + 1 연산 결과

'm'(109)에 1을 더하면 110이 되며, 이는 ASCII 값으로 n에 해당합니다. 따라서 %d로는 110, %c로는 n이 출력됩니다.

3. s - 1 연산 결과

'm'(109)에서 1을 빼면 108이 되며, 이는 ASCII 값으로 l에 해당합니다. 따라서 %d로는 108, %c로는 l이 출력됩니다.

4. 문자 간 뺄셈 ('z' - 'y')

변수 t에는 'z'와 'y'의 ASCII 값 차이인 1이 저장됩니다. 두 문자의 차이는 정수이므로 %d로 출력해야 하며, 만약 %c로 출력하면 ASCII 값 1에 해당하는 제어 문자(SOH)가 표시되어 의미 있는 결과를 얻을 수 없습니다. 그래서 코드에서 해당 printf 문은 주석 처리되어 있습니다.

정리

C 언어에서 문자는 본질적으로 작은 크기의 정수(char 타입)이므로 산술 연산이 자유롭게 가능합니다. 이러한 문자 산술 특성을 활용하면 알파벳 순회, 대소문자 변환, 문자열 암호화(카이사르 암호 등)와 같은 다양한 프로그래밍 작업을 손쉽게 구현할 수 있습니다.