不wint_t
就是为了这个吗?iswXxxxx()
函数采用以下类型wint_t
:
ISO 9899:1999 在各个部分中涵盖了这一点,向后工作:
§7.25 宽字符分类和映射实用程序<wctype.h>
§7.25.2.1.1 iswalnum 函数
概要
#include <wctype.h>
int iswalnum(wint_t wc);
描述
iswalnum 函数测试任何 iswalpha 或 iswdigit 为真的宽字符。
§7.24 扩展的多字节和宽字符实用程序<wchar.h>
§7.24.1 简介:
wint_t
它是一个默认不变的整数类型,参数promotions 可以保存对应于扩展字符集成员的任何值,以及至少一个不对应于扩展字符集任何成员的值(参见下面的WEOF);269)
269) wchar_t
并且wint_t
可以是相同的整数类型。
“默认情况下不变的参数提升”应该意味着它必须和 a 一样大int
,尽管它可能是 ashort
或unsigned short
if sizeof(short) == sizeof(int)
(现在很少出现这种情况,尽管对于某些 16 位系统来说确实如此)。
§7.17 通用定义<stddef.h>
wchar_t
这是一个整数类型,其值范围可以表示支持的语言环境中指定的最大扩展字符集的所有成员的不同代码;空字符的代码值为零,基本字符集的每个成员在用作整数字符常量中的唯一字符时,其代码值应等于其值。
只要传递给iswalnum()
或其亲属的值是有效的wchar_t
或 WEOF,该函数就会正常工作。如果您凭空制造了价值并设法弄错了价值,那么您将获得未定义的行为。