# char16_t

< c‎ | string‎ | multibyte

定义于头文件 `<uchar.h>` |  |
typedef uint_least16_t char16_t; |  | (C11 起)
定义于头文件 `<stdint.h>` |  |
typedef /*implementation-defined*/ uint_least16_t; |  | (C99 起)

char16_t 是用于 16 位宽字符的无符号整数类型，与 uint_least16_t 为同一类型。

uint_least16_t 是至少拥有 16 位宽度的最小无符号整数。

### 注意

任何给定平台上，类型 char16_t 的宽度可能大于 16 位，但存储于 char16_t 类型对象中的实际值将始终拥有 16 位宽度。

### 示例

    #include <uchar.h>
    #include <stdio.h>

    int main(void)
    {
        char16_t wcs[] = u"zß水🍌"; // 或 "z\u00df\u6c34\U0001f34c"
        size_t wcs_sz = sizeof wcs / sizeof *wcs;
        printf("%zu UTF-16 code units: [ ", wcs_sz);
        for (size_t n = 0; n < wcs_sz; ++n) printf("%#x ", wcs[n]);
        printf("]\n");
    }

可能的输出：

    6 UTF-16 code units: [ 0x7a 0xdf 0x6c34 0xd83c 0xdf4c 0 ]

### 引用

- C11 标准（ISO/IEC 9899:2011）：

  - 7.28 Unicode utilities <uchar.h> (p: 398)

  - 7.20.1.2 Minimum-width integer types (p: 290)

- C99 标准（ISO/IEC 9899:1999）：

  - 7.18.1.2 Minimum-width integer types (p: 256)

### 参阅