Различные is...
функции (, например. isalpha
,isdigit
)в ctype.h
не совсем предсказуемы. Они принимают аргументы int
, но ожидают символьные значения в диапазоне unsigned char
, поэтому на платформе, где используется знак char
, прямая передача значения char
может привести к нежелательному расширению знака. Я считаю, что типичным подходом к решению этой проблемы является явное приведение к unsigned char
.
Хорошо, но каков правильный переносимый способ работы с различными функциями isw...
в wctype.h
? wchar_t
, как и char
, также может быть подписанным или беззнаковым, но поскольку wchar_t
сам по себе является typedef
, имя типа unsigned wchar_t
недопустимо.