char
类型是 C 语言中的基本数据类型,提供 1 个字节来存储字符,其最小取值范围为 0~127
,signed char
的最小取值范围为 -127~127
,unsigned char
的最小取值范围是 0~255
。缺省的 char
类型到底是有符号还是无符号取决于编译器。
字符声明
在程序中,char
类型的变量的声明方式如下。
char ch;
char ch1, ch2;
字符初始化
在 C 程序中,向初始化 char
变量,可以直接将字母或符号赋给声明的字符即可。
char x = 'X';
char ch = '&';
字母或符号赋给 char
类型声明的变量时,需要使用单引号 ''
将其包围。使用单引号包围的字母与符号称为字符常量。
char
类型容纳的是字符型值,但本质上是整型值。计算机使用数字编码来处理字符,即用特定的整数表示特定的字符,如下所示。
printf("%cn", x); // X
printf("%dn", x); // 88
X
在 ASCII 码中对应的代码值就是 88
,所以也可以使用整数值来赋值:
char x = 88;
printf("%cn", x); // X
标准 ASCII 码的范围是 0~127
,只需 7 位二进制数即可表示。而 char
类型通常被定义为 8 位的存储单元,因此容纳 ASCII 码绰绰有余。许多其它系统还提供扩展 ASCII 码,也在 8 位的表示范围内。一般而言,C 语言会保证 char
类型足够大,以存储系统的基本字符集。
转义字符
字符集中有一类字符具有打印不出来,而使用特殊的符号序列表示这些特殊的字符称为转义字符。下面列出转义字符及其的含义。
转义字符 | 含义 |
---|---|
a |
警报(ANSI C) |
b |
退格 |
f |
换页 |
n |
换行 |
r |
回车 |
t |
水平制表符 |
v |
垂直制表符 |
\ |
反斜杠( ) |
' |
单引号 |
" |
双引号 |
? |
问号 |
oo |
八进制值(oo必须是有效的八进制数,即每个o可表示0~7中的一个数) |
xhh |
十六进制(hh必须是有效的十六进制数,即每个h可表示0~f中的一个数) |
这些转义字符不一定在所有的显示设备上都起作用。
字符操作
C 语言标准库提供了 ctype.h
头文件用于处理字符,其中包含了用于判断和转换单个字符的函数。
函数 | 描述 |
---|---|
isalpha | 判断是否是字母a~z或A~Z |
isupper | 判断是否是大写字母A~Z |
islower | 判断是否是小写字母a~z |
isdigit | 判断是否是十进制数字0~9 |
isxdigit | 判断是否是十六进制数字,包括所有十进制数字,小写字母a~f,大写字母A~F |
isspace | 判断是否是空白字符。空格’ ‘, 换页 ‘f’, 换行 ‘n’, 回车 ‘r’, 制表符 ‘t’ 或垂直制表符 ‘v’ |
ispunct | 判断是否是标点符号,任何不属于数字或字母的图形字符(可打印符号) |
isalnum | 判断是否是字母或数字。a~z,A~Z或0~9 |
isprint | 判断是否是可打印字符,包括图形字符和空白字符 |
isgraph | 判断是否是图形字符 |
iscntrl | 判断是否是控制字符 |
toupper | 返回其参数的对应大写形式 |
tolower | 返回其参数的对应小写形式 |
这里的函数有的用于判断传入的字符是否符合该函数并返回一个整形值,表示真或假;有的函数用于转换字符大小写。
char x = 'X';
isupper(x); // 1
islower(x); // 0
toupper(x); // 'X'
tolower(x); // 'x'
这里的 toupper
传入的是大写字母,因此函数不会修改参数,而是直接返回。
直接测试或操纵字符将会降低程序可移植性,如
if (ch >= 'A' && ch <= 'Z')
,因此,使用ctype.h
提供的函数来判断if (isupper(ch))
,无论哪个字符集都能顺利运行。

原文始发于微信公众号(海人为记):一文讲解C语言字符
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/27476.html