《 Linux C编程一站式学习》连载十
来源:互联网 发布:北京南天软件 知乎 编辑:程序博客网 时间:2024/05/21 03:27
6. 字符类型与字符编码
字符常量或字符型变量也可以当作整数参与运算,例如:
printf("%c/n", ''a''+1);
执行结果是b
。
我们知道,符号在计算机内部也用数字表示,每个字符在计算机内部用一个整数表示,称为字符编码(Character Encoding),目前最常用的是ASCII码(American Standard Code for Information Interchange,美国信息交换标准码),详见图 A.1 “ASCII码表”。表中每一栏的最后一列是字符,前三列分别是用十进制(Dec)、十六进制(Hx)和八进制(Oct)表示的字符编码,各种进制之间的换算将在第 2 节 “不同进制之间的换算”介绍。从十进制那一列可以看出ASCII码的取值范围是0~127。表中的很多字符是不可见字符(Non-printable Character)或空白字符(Whitespace)[3],不能像字母a这样把字符本身填在表中,而是用一个名字来描述该字符,例如CR(carriage return)、LF(NL line feed,newline)、DEL等等。作为练习,请读者查一查表 2.1 “C标准规定的转义字符”中的字符在ASCII码表中的什么位置。
回到刚才的例子,在ASCII码中字符a
是97,字符b
是98。计算''a''+1
这个表达式,应该按ASCII码把''a''
当作整数值97,然后加1,得到98,然后printf
把98这个整数值当作ASCII码来解释,打印出相应的字符b
。
之前我们说“整型”是指int
型,而现在我们知道char
型本质上就是整数,只不过取值范围比int
型小,所以以后我们把char
型和int
型统称为整数类型(Integer Type)或简称整型,以后我们还要学习几种类型也属于整型,将在第 1 节 “整型”详细介绍。
字符''a''
~''z''
、''A''
~''Z''
、''0''
~''9''
的ASCII码都是连续的,因此表达式''a''+25
和''z''
的值相等,''0''+9
和''9''
的值也相等。注意''0''
~''9''
的ASCII码是十六进制的30~39,和整数值0~9是不相等的。
字符也可以用ASCII码转义序列表示,这种转义序列由/加上1~3个八进制数字组成,或者由/x
或大写/X
加上1~2个十六进制数字组成,可以用在字符常量或字符串字面值中。例如''/0''
表示NUL字符(Null Character),''/11''
或''/x9''
表示Tab字符,"/11"
或"/x9"
表示由Tab字符组成的字符串。注意''0''
的ASCII码是48,而''/0''
的ASCII码是0,两者是不同的。
[3] 空白字符在不同的上下文中有不同的含义,在C语言中空白字符定义为空格、水平Tab、垂直Tab、换行和分页符,本书在使用“空白字符”这个词时会明确说明在当前上下文中空白字符指的是哪些字符。
- 《 Linux C编程一站式学习》连载十
- 《 Linux C编程一站式学习》连载一
- 《 Linux C编程一站式学习》连载二
- 《 Linux C编程一站式学习》连载三
- 《 Linux C编程一站式学习》连载四
- 《 Linux C编程一站式学习》连载五
- 《 Linux C编程一站式学习》连载六
- 《 Linux C编程一站式学习》连载七
- 《 Linux C编程一站式学习》连载八
- 《 Linux C编程一站式学习》连载九
- 《 Linux C编程一站式学习》连载十一
- 《 Linux C编程一站式学习》连载十二
- 《 Linux C编程一站式学习》连载十三
- Linux C编程连载(3)-串口编程
- Linux C编程连载【3】-串口编程
- Linux C编程连载(2)-鼠标控制
- Linux C编程连载【2】-鼠标
- Linux C编程一站式学习
- 各种文件夹的识别
- FreeBSD 安装一记
- 程序员的十重境界[转]
- ~~~~~~~~~~~~
- 学编译原理,一个文法规则的实现
- 《 Linux C编程一站式学习》连载十
- 浅谈
- 放大电路
- 《 Linux C编程一站式学习》连载十一
- WIFI
- linux 下的u-boot移植
- 《 Linux C编程一站式学习》连载十二
- 《 Linux C编程一站式学习》连载十三
- 最近学习C++ 数据结构 尝试代码就放上来吧 初学者适用