Я знаю, что это не встроенный тип данных. В C ++ я понимаю, что мы можем создать тип данных, который выглядит и действует почти как базовый тип данных. Но в Си я не понимаю, как это работает аналогично базовому типу данных.
I know it is not a standard data type
Да, его стандарт (описан в <stddef.h>
)
wchar_t
Интегральный тип, диапазон значений которого может представлять различные коды широких символов для всех членов самого большого набора символов
указывается среди локалей, поддерживаемых средой компиляции:
нулевой символ имеет кодовое значение 0 и каждый член
Портативный набор символов имеет значение кода, равное его значению при использовании
как одиночный символ в целочисленной символьной константе.
But in C I don't understand how it works similar to basic data type.
Используйте функции и макросы wchar.h заголовок
В С, wchar_t
является typedef для целочисленного типа, определенного в <stddef.h>
(и, возможно, другие заголовки).
См. Стандарт, раздел 7.17 ( http://port70.net/~nsz/c/c99/n1256.html#7.17 )
wchar_t
является целочисленным типом, диапазон значений которого может представлять различные коды для всех членов наибольшего расширенного набора символов, указанного среди поддерживаемых локалей; нулевой символ должен иметь нулевое значение кода.
Стандарты C ++ 11 и C11 признают wchar_t
как стандартный тип данных «широкий символ».
Стандарт C11 определяет семантику wchar_t
в 7.19 / 2:
Типы […] и
wchar_t
который является целочисленным типом, диапазон значений которого может представлять различные коды для всех членов самого большого расширенного набора символов, указанного среди поддерживаемых локалей; нулевой символ должен иметь нулевое значение кода. Каждый член базового набора символов
должно иметь значение кода, равное его значению при использовании в качестве одиночного символа в целом числе
символьная константа, если реализация не определяет
__STDC_MB_MIGHT_NEQ_WC__
,
В то время как стандарт C ++ 11 говорит в 3.9.1 / 5:
Тип
wchar_t
это отдельный тип, значения которого могут представлять разные коды для всех членов самого большого
расширенный набор символов, указанный среди поддерживаемых локалей (22.3.1). Типwchar_t
должен иметь то же самое
требования к размеру, подписи и выравниванию (3.11) как один из других интегральных типов, называемых его основными
тип. […]