相关疑难解决方法(0)

"可表示"在C11中意味着什么?

根据C11 WG14草案版本N1570:

标头<ctype.h>声明了几个用于分类和映射字符的函数.在所有情况下,参数都是a int,其值应表示为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)

标准是否允许传递charisspace()(charint)?换句话说,char转换后可以int 表示unsigned char


以下是wiktionary定义"可表示"的方式:

能够代表.

char能够被表示为unsigned char是的.§6.2.6.1/ 4:

存储在任何其他对象类型的非位字段对象中的值由n × CHAR_BIT …

c language-lawyer c11

6
推荐指数
2
解决办法
485
查看次数

标签 统计

c ×1

c11 ×1

language-lawyer ×1