响水凹

欢迎来到 Guang-Wen Duan (Dennis Duan) 的个人 Wiki

用户工具

站点工具


computer:c:tips:character_constant

字符常量(Character constant)

字符常量由单引号(')包含的一个或多个字符构成。标准C允许使用前缀L来表示宽字符常量。

常量中可以使用反斜杆(\)实现转义。如果常量中要包含单引号(')和反斜杆(\),则需要转义。

没有前缀L的字符常量的类型是int,所以sizeof('A')=sizeof(int),常量的值是执行字符集中相应字符的数字编码,由char类型整提升为int类型后的结果。例如,如果char为8bit的有符号类型,则常量'\377'经过符号扩展后得到的int值为-1。

带前缀L的字符常量类型为wchar_t。

当出现下面几种情况时,字符常量的值依赖于实现(implementation-defined):

  • 在执行字符集中没有对应的字符;
  • 常量中包含多个执行字符集中的字符;
  • 数字转义常量在执行字符集中无法表示。

使用包含多个字符的字符常量是不可移植的(依赖于实现),有的实现不允许这么做,有些实现则将其转化为对应字节数的整型常量。但即使这样,由于各个系统的字节序(byte ordering)的不同,获得的整型常量的值也是不同的。

例如,常量'ABCD'(以ASCII字符集为例)的值可能为0x41424344(left-to-right packing),也可能为0x44434241(right-to-left packing)。

所以,不建议在程序中使用这种字符常量。

computer/c/tips/character_constant.txt · 最后更改: 2014/11/01 02:02 由 127.0.0.1