方法1:直接使用char类型(隐式转换)
ASCII码本质上是0-127的整数,可以直接赋值给char变量,C语言会自动将其解释为对应的字符。
#include <stdio.h>
int main() {
int ascii_value = 65; // 'A'的ASCII码
char character = ascii_value; // 隐式转换
printf("字符: %c\n", character); // 输出: A
ascii_value = 97; // 'a'的ASCII码
character = ascii_value;
printf("字符: %c\n", character); // 输出: a
return 0;
}
方法2:显式类型转换(强制转换)
如果变量是int类型,可以通过强制转换为char来显式表示字符。
#include <stdio.h>
int main() {
int ascii_value = 48; // '0'的ASCII码
char character = (char)ascii_value; // 强制转换
printf("字符: %c\n", character); // 输出: 0
return 0;
}
方法3:通过格式化输出直接打印
如果只是临时需要打印字符,可以直接在printf中使用%c格式说明符,无需显式转换。
#include <stdio.h>
int main() {
int ascii_value = 33; // '!'的ASCII码
printf("字符: %c\n", ascii_value); // 直接输出: !
return 0;
}
方法4:字符转ASCII码(反向操作)
如果需要将字符转回ASCII码,可以直接用int接收字符的值:
#include <stdio.h>
int main() {
char ch = 'Z';
int ascii_value = ch; // 隐式转换为ASCII码
printf("ASCII码: %d\n", ascii_value); // 输出: 90
return 0;
}
注意事项
- 范围限制:标准ASCII码是0-127,扩展ASCII码(如128-255)可能因系统而异。
- 负数处理:如果
char是 signed 类型(常见于大多数系统),负数(如-128到-1)可能表示无效字符。 - 打印控制字符:ASCII码0-31是控制字符(如换行
\n、回车\r),直接打印可能看不到效果。
完整示例
#include <stdio.h>
int main() {
// ASCII码转字符
int ascii[] = {65, 66, 67, 97, 98, 99, 48, 49, 50};
for (int i = 0; i < 9; i++) {
printf("%d -> %c\n", ascii[i], ascii[i]);
}
// 字符转ASCII码
char chars[] = {'A', 'b', '1', '@'};
for (int i = 0; i < 4; i++) {
printf("%c -> %d\n", chars[i], chars[i]);
}
return 0;
}
输出:
65 -> A
66 -> B
67 -> C
97 -> a
98 -> b
99 -> c
48 -> 0
49 -> 1
50 -> 2
A -> 65
b -> 98
1 -> 49
@ -> 64
