int: 정수형 데이터를 저장하는 데 사용한다. 일반적으로 4바이트(32비트)를 차지하며, -2,147,483,648부터 2,147,483,647까지의 정수를 저장할 수 있다.
char: 문자형 데이터를 저장하는 데 사용한다. 1바이트(8비트)를 차지하며, 아스키(ASCII) 문자 하나를 저장할 수 있다. 아스키 코드 체계에서 문자 'A'는 65, '0'은 48과 같은 정수값으로 표현된다.
예제 1: 한 자리 숫자를 문자로 변환하기
#include <stdio.h>
int main() {
int num = 5;
char c = num + '0'; // 숫자 5를 문자 '5'로 변환
printf("문자: %c\n", c); // 출력: 문자: 5
return 0;
}
이 코드에서 num이 5일 때, '0'을 더하면 문자 '5'에 해당하는 아스키 코드 값 53이 된다. 이를 char형 변수에 저장하고 출력하면 '5'라는 문자가 나타난다.
예제 2: 두 자리 숫자를 개별 문자로 변환하기
두 자리 숫자를 문자로 변환할 때는, 십의 자리와 일의 자리를 분리하여 각각 문자로 변환해야 한다.
int main() {
int num = 42;
char tens = (num / 10) + '0'; // 십의 자리: '4'
char ones = (num % 10) + '0'; // 일의 자리: '2'
printf("십의 자리: %c, 일의 자리: %c\n", tens, ones); // 출력: 십의 자리: 4, 일의 자리: 2
return 0;
}
예제 3: 문자를 숫자로 변환하기
#include <stdio.h>
int main() {
char c = '7';
int num = c - '0'; // 문자 '7'을 숫자 7로 변환
printf("숫자: %d\n", num); // 출력: 숫자: 7
return 0;
}
#include <stdio.h>
int main() {
int num;
printf("숫자를 입력하세요: ");
scanf("%d", &num); // 사용자로부터 숫자 입력 받기
// 숫자를 문자로 변환하여 출력하기
if (num >= 0 && num < 10) {
printf("한 자리 숫자: %c\n", num + '0');
} else if (num >= 10 && num < 100) {
printf("두 자리 숫자: %c%c\n", (num / 10) + '0', (num % 10) + '0');
} else {
printf("두 자리 이하의 숫자만 입력하세요.\n");
}
return 0;
}