为什么字符函数接受int参数而不是char参数?
<ctype.h>
int isalnum(int c);
int isalpha(int c);
int iscntrl(int c);
int isdigit(int c);
int isgraph(int c);
int islower(int c);
int isprint(int c);
int ispunct(int c);
int isspace(int c);
int isupper(int c);
int isxdigit(int c);
int tolower(int c);
int toupper(int c);
int
。 - Cody Grayint
。但是,字面值与这些函数参数具有相同的类型并不像看起来那么简单。您可以编写isalnum('a')
,但不能保证能编写isalnum(CHAR_MIN)
,或者对应于您实现中的CHAR_MIN
的任何字符文字,因为它可能是负数。为了与这些函数匹配,字符字面值确实需要具有unsigned
类型,但将它们转换为char
会潜在地出现问题。 - Steve Jessop