我理解字符变量在C中声明为char C;
。但是字符变量可以包含哪些值?
答案 0 :(得分:11)
答案确实是:这取决于您的平台。
幸运的是,这些都是在您的实施<limits.h>
中定义的。在这里,您将找到定义char
的有效范围的常量,以及所有其他标准数据类型。
char
是一个字节,通常 8位。从技术上讲,char
是CHAR_BIT
位。对于一些非常旧的机器,这是7,但这些是在C规范要求CHAR_BIT >= 8
之前。还有其他类似DSP的实现具有更大的char
s。
char
可以将CHAR_MIN
范围设为CHAR_MAX
signed char
可以将SCHAR_MIN
范围设为SCHAR_MAX
unsigned char
可以将范围0
设为UCHAR_MAX
CHAR_MIN == SCHAR_MIN
,那么您的char
已签名;否则它是未签名的。答案 1 :(得分:4)
根据C标准(N1570草案):
5.2.4.2.1整数类型的大小
下面给出的值应替换为适用于#if的常量表达式 预处理指令。而且,除了CHAR_BIT和MB_LEN_MAX之外 以下内容应替换为与a相同类型的表达式 表达式,它是根据整数转换的相应类型的对象 促销活动。 它们的实现定义值的大小(绝对值)应与显示的值相等或更大,且符号相同。
- 最小对象不是位字段(字节)的位数
CHAR_BIT 8
- signed char
类型对象的最小值SCHAR_MIN -127 // −(2^7 − 1)
- signed char
类型对象的最大值SCHAR_MAX +127 // 2^7 − 1
- unsigned char类型对象的最大值
UCHAR_MAX 255 // 2^8 − 1
可以通过<limits.h>
中定义的值检查实施的确切值。