wchar_t数据类型如何工作

how wchar_t data type working c?

本文关键字:工作 何工作 数据类型 wchar      更新时间:2023-10-16

我知道这不是一个内置的数据类型。在c++中,我知道我们可以创建一个看起来和行为几乎类似于基本数据类型的数据类型。但是在C中,我不明白它是如何与基本数据类型相似的。

I know it is not a standard data type

是的,它的标准(在<stddef.h>中描述)

wchar_t整型,其值范围可以表示最大字符集的所有成员的不同宽字符代码在编译环境支持的语言环境中指定:null字符的代码值为0,并且可移植字符集的代码值与其使用时的值相等作为整型字符常量中的唯一字符。

But in C I don't understand how it works similar to basic data type.

使用wchar.h header

的函数和宏

在C语言中,wchar_t<stddef.h>(可能还有其他头文件)中定义的整数类型的typedef。

见标准第7.17节(http://port70.net/~nsz/c/c99/n1256.html#7.17)

wchar_t是一个整数类型,其取值范围可以表示在支持的语言环境中指定的最大扩展字符集的所有成员的不同代码;null字符的代码值应为0。

c++ 11和C11标准都承认wchar_t为"宽字符"标准数据类型。

C11标准在7.19/2中定义了wchar_t的语义:

类型是[…])和
wchar_t
这是一个整数类型,其值范围可以表示在支持的语言环境中指定的最大扩展字符集的所有成员的不同代码;null字符的代码值应为0。基本字符集的每个成员当用作整数中的唯一字符时,应具有与其值相等的代码值字符常量,如果实现没有定义__STDC_MB_MIGHT_NEQ_WC__ .

而c++ 11标准在3.9.1/5中说:

类型wchar_t是一个不同的类型,其值可以表示最大的所有成员的不同代码在支持的语言环境中指定的扩展字符集(22.3.1)。类型wchar_t应具有相同的大小、签名和对齐要求(3.11)作为其他整型之一,称为其底层类型。[…]