# char32_t

< c‎ | string‎ | multibyte

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

char32_t 是用于 32 位宽字符的无符号整数类型，与 uint_least32_t 为同一类型。

uint_least32_t 是至少拥有 32 位的最小无符号整数类型。

### 注意

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

### 示例

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

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

可能的输出：

    5 UTF-32 code units: [ 0x7a 0xdf 0x6c34 0x1f34c 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)

### 参阅