根据C11 WG14草案版本N1570:
标头
<ctype.h>声明了几个用于分类和映射字符的函数.在所有情况下,参数都是aint,其值应表示为unsigned char或等于宏的值EOF.如果参数具有任何其他值,则行为未定义.
是不确定的行为?:
#include <ctype.h>
#include <limits.h>
#include <stdlib.h>
int main(void) {
char c = CHAR_MIN; /* let assume that char is signed and CHAR_MIN < 0 */
return isspace(c) ? EXIT_FAILURE : EXIT_SUCCESS;
}
Run Code Online (Sandbox Code Playgroud)
标准是否允许传递char给isspace()(char到int)?换句话说,char转换后可以int 表示为unsigned char?
能够代表.
是char能够被表示为unsigned char?是的.§6.2.6.1/ 4:
存储在任何其他对象类型的非位字段对象中的值由n
×CHAR_BIT …