C核心技术手册(二十二)
来源:互联网 发布:nginx配置 linux 编辑:程序博客网 时间:2024/05/16 05:49
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核心技术手册(十二)
- C核心技术手册(二)
- C核心技术手册(二十)
- C核心技术手册(二十一)
- C核心技术手册(二十三)
- C核心技术手册(二十四)
- C核心技术手册(二十五)
- C核心技术手册(二十六)
- C核心技术手册(二十七)
- C核心技术手册(二十八)
- C核心技术手册(二十九)
- C核心技术手册(一)
- C核心技术手册(三)
- C核心技术手册(四)
- C核心技术手册(五)
- C核心技术手册(六)
- C核心技术手册(七)
- MySQL表级锁,行级锁和页级锁
- 关于处理器架构的一点儿知识
- linux下Mail服务器架设攻略(转)
- linux下Mail服务器架设攻略(转)
- 1月5号英语学习
- C核心技术手册(二十二)
- WebBrowser控件应用:弹出新窗体和关闭窗口 (转)
- 未来在哪里?(清华大学刘徐舟老师经典语录)
- 遇见曾经的我
- What is JSON ?
- クラスのEJB
- window.close 关闭WebBrowser(高手那里转来的)测试已经成功
- 大型网站运维探讨和心得
- 【转】Cornell 学习法