3.3 字符常量
字符常量由一个单引号中包含一个或多个字符组成。一些例子如下:
‘a’ ‘XY’ ‘0’ ‘*’
所有源字符集中的字符均可用于字符常量中,除去单引号(‘),反斜杠(/),及换行符,可以使用转义字符来表示这些字符:
‘/’’ ‘//’ ‘/n’
在字符常量中所有需要转义的字符将在”转义字符”一节描述。
3.3.1 字符常量的类型
字符常量具有int类型,除非它们被明确地使用前缀L定义为宽字符(wchart_t),如果一个字符常量仅含有占有一个字节的字符,它的值将是执行时字符集中的字符码。例如,常量a在ASCII编码中的十进制值为97,含有多个字符的字符常量其值因编译器的不同而各异。
下面的代码段测试输入的值是否在1和5之间(包括1和5):
#include <stdio.h>
int c = 0;
/* ... */
c = getchar( ); // Read a character.
if ( c != EOF && c > '0' && c < '6' ) // Compare input to character
// constants.
{
/* This block is executed if the user entered a digit from 1 to 5. */
}
如果char类型是有符号的,那么字符常量的值也可能为负数,因为常量的值是char向int类型转换的结果。例如,ISO 8859-1,或称ANSI字符集,通常使用8-bit字符集,在它中,英磅的表示字符£,其十六进制值为A3:
int c = '/xA3'; // Symbol for pounds sterling
printf("Character: %c Code: %d/n", c, c);
如果执行时字符集为ISO 8859-1,且类型char是有符号的,那么上面例子中的printf语句将产生如下输出:
Character: £ Code: -93
在一个不使用单字节字符的程序中,你可以使用宽字符常量,宽字符常量具有类型wchar_t,使用前缀L,如下面这些例子:
L'a' L'12' L'/012' L'/u03B2'
包含单个多字节字符的宽字符常量的值为标准函数mbtowc()的返回值。
3.3.2 转义字符
转义字符以反斜杠/开始,表示一个单字符,转义字符允许你表示任意字符常量和字符串常量,包括不可打印字符和具有特殊意义的字符,例如’和”, Table 3-3列出了C中公认的转义字符。
Table 3-3. Escape sequences
转义字符
|
字符值
|
输出设备上的动作
|
/’
|
单引号(’)
|
可打印字符
|
/’’
|
双引号(”)
|
|
/?
|
问号(?)
|
|
//
|
反斜杠(/)
|
|
/a
|
警报
|
产生一个听得见或可见的信号
|
/b
|
退格
|
从当前位置向前移动一个字符
|
/f
|
换页
|
从当前位置移动到下一个新页的开始
|
/n
|
换行
|
从当前位置移动到下一个新行的开始
|
/r
|
回车
|
从当前位置移动到当前行的开始
|
/t
|
水平TAB
|
从当前位置移动一个水平tab键
|
/v
|
垂直TAB
|
从当前位置移动一个垂直tab键
|
/o,/oo, 或/ooo
|
八进制字符
|
可打印字符
|
/xh[h…]
|
十六进制字符
|
|
/uhhhh
/Uhhhhhhhh
|
通用字符名
|
|
如表Table 3.3所示,通用字符名也可使用转义字符,通用字符允许指定扩展字符集中任意的字符,而不管使用的是何种编码方式。
你可使用八进制或十六进制转义字符来表示在类型unsigned char的取值范围内的任意字符码,或者在类型wchar_t取值范围内的任意宽字符码。如Table 3-4.
Table 3-4. Examples of octal and hexadecimal escape sequences
八进制
|
十六进制
|
描述
|
‘/0’
|
‘/x0’
|
null
|
‘/033’ ‘/33’
|
‘/x1B’
|
ESC
|
‘/376’
|
‘/xfe’
|
254
|
‘/417’
|
‘/x10f’
|
非法,其值超过unsigned char 的取值范围
|
L’/417’
|
L’/x10f’
|
宽字符常量,类型为wchar_t
|
-
|
L’/xF82’
|
宽字符常量
|
表中没有最后一个常量L’/xF82’对应的八进制表示,因为八进制转义字符不能容纳三个八进制数字,同样,宽字符常量L’/3702’包含两个字符,分别为L’370’和L’2’。
分享到:
相关推荐
### C语言核心技术(英文文字版) #### 书籍概述 《C语言核心技术》是一本由 Tony Crawford 和 Peter Rinz 合著的经典技术书籍,由著名的 O'Reilly 出版社出版。该书首次发布于2005年12月,全书共计618页,ISBN号...
### C语言核心技术(C in a Nutshell) #### 知识点概述 《C语言核心技术》是一本由C语言专家Peter Prinz与Tony Crawford合作撰写的权威性书籍,它旨在为C语言程序员提供全面且深入的核心知识和技术指导。本书不仅...
《C语言技术手册》是一本全面且深入探讨C语言编程的资源,旨在帮助开发者和学习者迅速查询和理解C语言的各种函数及语法特性。CHM(Compiled Help Manual)格式是微软开发的帮助文档格式,通常包含丰富的索引、搜索...
### C语言核心技术(C: In a Nutshell) #### 核心知识点概览 《C语言核心技术》这本书由Tony Crawford和Peter Prinz等作者编写,由O'Reilly出版社于2005年12月出版。全书共有618页,涵盖了C语言的所有核心概念和...
### C语言核心技术——《C in a Nutshell》 #### 一、书籍简介 《C in a Nutshell》是由Tony Rawford和Peter Rinz共同编写的关于C语言的权威指南,出版社为O'Reilly,出版日期为2005年12月,ISBN编号为0-596-00697...
《C语言核心技术》不仅适合C语言初学者快速入门,也适合有经验的程序员作为日常工作的参考手册。该书内容丰富,结构清晰,通过大量实例加深读者对C语言的理解和掌握,是C语言学习者和专业程序员的必备书籍之一。 ...
·提供了mysql语句、函数、配置选项和实用工具的一个完整手册。 ·给出了几个指导章节用于帮助新手入门。 ·为php、perl和c语言提供了应用程序编程接口(api)。 ·在每章的api开头部分提供了简要的指南。 ...
《C语言核心技术》不仅适合初学者作为C语言学习的快速入门指南,也适合有经验的程序员作为日常工作的实用参考手册。书中深入浅出地讲解了C语言的各个方面,辅以丰富的示例代码,使读者能够在实践中加深理解和记忆。...
### C核心技术手册知识点总结 #### 一、C语言的基础语法 **1.1 C的特征** C语言是一种过程式编程语言,由Dennis Ritchie于1970年代初在贝尔实验室开发,最初是为了实现UNIX操作系统及其应用程序能够尽可能地与...
《云打印C-Lodop技术手册》是一本详细介绍如何利用C-Lodop进行云端打印操作的技术文档。C-Lodop,全称为Cloud Lodop,是一款高效便捷的云打印解决方案,尤其适用于小票、箱贴、财务单等各类文档的远程打印需求。其...
根据提供的信息,《LINUX内核技术手册2.pdf》是一本专注于Linux内核配置、构建及安装的专业技术书籍。以下是对该书所涉及的关键知识点的详细总结: ### 一、书籍基本信息 - **书名**: Linux内核技术手册 - **作者*...
02H3 C VEPC3200核心网故障处理手册pdf 03H3CBBU3100系列基带处理单元故障处理手册,p 04H3 C VEPC3200产品开局自检手册pdf 05H3 C VMEGW3200技术白皮书pdf 06移动通信技术概述pdf 07H3CEPC3108核心网特性手册(E2123)...
综上所述,《C语言核心技术》这本书不仅是一本C语言的入门指南,还是一本详尽的参考手册。无论是初学者还是有经验的开发者,都能从中受益匪浅。通过系统地学习这些内容,读者可以更高效地使用C语言进行编程,并解决...
### S3C2416核心板开发板硬件...综上所述,S3C2416核心板及其开发板为各类嵌入式系统设计提供了强大的硬件基础,其详细的硬件手册则为开发者提供了全面的技术指导和法律提示,是进行相关项目开发不可或缺的参考资料。