现在的位置: 首页 > 综合 > 正文

C核心技术手册(七)

2017年09月06日 ⁄ 综合 ⁄ 共 1178字 ⁄ 字号 评论关闭

通用字符名

  C也支持通用字符名来使用扩展字符集,使用通用字符名,你可以指定任何扩展字符,它的Unicode值如下形式:

  /uXXXX

  或者:

  /UXXXXXXXX

其中,XXXXXXXXXXXX16进制的Unicode指针符号,使用小写字母u做为前缀,后面为四个十六进制数字,或者大写字母U,后面为8个十六进制数字. 如果前四个十六进制数字为0,则也可以写作/uXXXX或者/U0000XXXX

  通用字符名可以用来表示标识符、字符常量、字符串,但是,不能用来表示基本字符集中的字符。

  当你使用通用字符名来表示一个字符,编译器将它存储在字符集中,以便执行时使用。例如,如果执行时字符集在一个本地化程序中是ISO 8859-7 (8-bit Greek),则下面的的变量alpha使用/xE1初始化。

  Char alpha = ‘/u03B1’

然而如果执行时字符集为UTF-16,需要定义一个宽字符变量:

  Wchar_t alpha = ‘/u03b1’

在这种情况下,alpha的值为十六进制3B1,与通用字符名相同。

:不是所用编译器都支持通用字符名

1.5.3两字母词和三字母词

  C为标点符号提供了一种可选择的表示,因为标点符号并不是所有键盘上均可用,6个两字节,或2个字符记号,如下Table 1-1.

Table 1-1 两字母词

两字母词

等价表示

<:

[

:>

]

<%

{

%>

}

%;

#

%;%;

##

  如果这些序列出现在字符常量或字符串中,它们将不被认为是两字母词,在其他位置,它们的行为的确与单字符符号相同,例如,下面的代码段完全有等价,产生相同的输出。

 两字母:

非两字母:

输出:

 C也提供三字母词,即使用三个字符表示,它们均以两个问号开始,第三个字符决定三字母词所表示的标点符号,见Table 1-2.

Table 1-2.三字母词

??(

[

??)

]

??<

{

??>

}

??=

#

??/

/

??!

|

??’

^

??-

~

 

  三字母词允许仅使用ISO/IEC 646中定义的字符来写任何C语言程序,1991年的标准符合7位的ASCII,在编译的第一阶段,预编译器使用三个单独的等价字符替换三字母词。这也是就是说,不同与两字母词,三字母词在任何时候均可以被三个等价的单字符替代,包括中字符常量、字符串、注释和预处理语句中,例如,预处理器解释以下三字母词:

预处理器的输出如下:

如果你想使用三个字符中的一个,而不想被解释为三字母词,可以按以下方式书写:

抱歉!评论已关闭.