C11中的通用字符名(Universal Character Names)

C11标准中引入了通用字符名(Universal Character Names)这个概念。其实,所为的通用字符名也就是我们俗称的Unicode。C11中采用两种方法来表示通用字符名,第一种是 \u 后面加正好四位十六进制数,不能多也不能少。第二种则是 \U 后面加正好八位十六进制数,不能多也不能少。这两者也称为“短标识符”。这里的通用字符名,\uxxxx 或 \Unnnnnnnn,其 xxxx 或 nnnnnnnn 部分所表示的值均为Unicode码点值(Unicode code point)。

C11中对通用字符名的取值范围做了约束:它所指定的码点值除了0024($)、0040(@)、0060(‘)之外,不应该小于00A0;同时,该值也不能在D800到DFFF范围内,因为该范围属于UTF-16编码的高位代理码点。

C11中的通用字符名神奇的一点是,它不仅能用于一般的字符常量以及字符串字面量,而且还能用于指定标识符。下面我们来举一个综合性的例子:

    int \u4f60\u597d = 100;     // 这里的标识符相当于:你好
    int \U0000597d = 50;        // 这里的标识符相当于:好
    
    // 这里的标识符相当于
上一篇:【STM32F429的DSP教程】第32章 STM32F429的实数FFT的逆变换(支持单精度和双精度)


下一篇:linux-带有std map和shared_ptr的奇怪内存行为