1. C 언어에서 데이터 타입의 중요성
C 프로그래밍에서 데이터 타입은 프로그램의 정확성과 성능에 큰 영향을 미칩니다. char와 int는 프로그램에서 자주 사용되는 기본 데이터 타입이며, 이들 사이를 변환해야 하는 상황이 많이 발생합니다. 이 글에서는 char와 int 타입 간 변환 방법과 주의해야 할 점을 설명합니다.
변환의 일반적인 사용 사례
char와 int 타입 간 변환은 문자와 해당 문자에 대응하는 숫자 값을 모두 다루고 싶을 때, 혹은 메모리를 절약하고 싶을 때 유용합니다. 예를 들어, char로 표현된 ASCII 코드를 int로 변환하여 계산에 사용할 수 있습니다. 또한, 사용자가 char 형태로 입력한 값을 숫자로 처리해야 할 때도 이 변환이 필요합니다.
2. char 를 int 로 변환하기
C에서는 타입 캐스팅을 이용해 char를 int로 변환할 수 있습니다. 이를 통해 char 값을 정수처럼 취급할 수 있습니다.
기본 변환 방법
char 값을 int 로 변환하려면 단순히 타입 캐스트를 사용하면 됩니다.
#include <stdio.h>
int main() {
char character = 'A'; // ASCII code of 'A' is 65
int intValue = (int)character; // Cast char to int
printf("The ASCII code of character %c is %d.n", character, intValue);
return 0;
}
이 프로그램은 문자 'A'를 정수로 변환하고 결과를 출력합니다. 출력값은 65가 됩니다.
Signed 와 Unsigned char 타입
C 언어는 char를 두 가지 형태로 제공하는데, signed와 unsigned가 있습니다. signed char는 음수 값을 가질 수 있고, unsigned char는 0부터 255까지의 값을 가질 수 있습니다. char를 int 로 변환할 때는 이 차이를 인식하는 것이 중요합니다. 아래는 unsigned char를 int 로 변환하는 예시입니다:
#include <stdio.h>
int main() {
unsigned char uChar = 200; // Unsigned char type
int intValue = (int)uChar;
printf("Converting unsigned char value %u to int gives %d.n", uChar, intValue);
return 0;
}
이 프로그램에서는 unsigned char 값 200을 int 로 변환하여 200으로 표시합니다. signed char의 경우 부호 처리 때문에 결과가 달라질 수 있으므로 상황에 따라 주의가 필요합니다.

3. int 를 char 로 변환하기
int 를 char 로 변환한다는 것은 더 큰 정수 값을 작은 char 타입으로 캐스팅하는 것을 의미합니다. 그러나 int 값이 char 의 범위를 초과하면 데이터 손실이 발생할 수 있으므로 주의가 필요합니다.
변환 방법 및 주의사항
int 를 char 로 변환할 때 값이 char 범위를 벗어나면 예상치 못한 결과가 나올 수 있습니다.
#include <stdio.h>
int main() {
int number = 300; // Value out of char range
char character = (char)number; // Data loss occurs
printf("Converting integer %d to char gives character '%c'.n", number, character);
return 0;
}
이 프로그램에서는 300 을 char 로 변환하면 데이터 손실이 발생하고 의도하지 않은 문자가 표시될 수 있습니다. char 타입의 유효 범위에 항상 유의하세요.
4. 문자열을 숫자로 변환하기
C에서 문자열을 숫자로 변환하는 것은 흔한 작업입니다. 예를 들어, 사용자 입력을 문자열 형태로 받아 정수로 변환해야 할 경우가 많습니다. atoi 나 strtol 과 같은 함수가 이 목적에 유용합니다.
atoi 함수로 변환하기
atoi 함수는 문자열을 정수로 쉽게 변환할 수 있지만, 오류 처리 기능이 제한적입니다.
#include <stdio.h>
#include <stdlib.h>
int main() {
char str[] = "1234";
int number = atoi(str); // Convert string to int
printf("Converting string %s to integer gives %d.n", str, number);
return 0;
}
이 프로그램은 문자열 "1234" 를 정수 1234 로 변환하고 결과를 출력합니다. 그러나 오류를 견고하게 처리하지는 못합니다.
strtol 함수로 안전하게 변환하기
strtol 함수는 변환 과정에서 오류를 검사하기 때문에 문자열을 숫자로 변환할 때 더 안전한 방법입니다.
#include <stdio.h>
#include <stdlib.h>
int main() {
char str[] = "1234";
char *endptr;
long int number = strtol(str, &endptr, 10); // Safely convert string to int
if (*endptr != ' ') {
printf("Conversion failed.n");
} else {
printf("Converting string %s to integer gives %ld.n", str, number);
}
return 0;
}
이 코드는 변환에 실패했을 경우 오류 메시지를 표시합니다. 이를 통해 숫자를 보다 안전하게 처리할 수 있습니다.
5. char와 int를 활용한 실용 예제
마지막으로 char와 int 타입을 결합한 실용적인 예제를 살펴보겠습니다.
char와 int를 이용한 혼합 계산
다음 프로그램은 char와 int를 모두 사용한 계산을 보여줍니다. 이 예제는 문자에 숫자를 더해 새로운 문자를 만드는 방법을 설명합니다.
#include <stdio.h>
int main() {
char ch = 'a';
int num = 3;
char result = ch + num; // Add 3 to ASCII value of 'a'
printf("Adding %d to character %c results in character '%c'.n", num, ch, result);
return 0;
}
이 프로그램에서는 'a'의 ASCII 코드에 3을 더하면 'd'가 생성됩니다. char와 int 타입을 함께 사용하는 간단한 예제입니다.



