C99第6.5.3.4节中始终有一个:
当应用于具有
Edit: not part of your question, but for interest from Harbison and Steele's. C: A Reference Manual, Third Edition, Prentice Hall, 1991 (pre c99) p. 148:
存储单元被视为
编辑:在回答您更新的问题时,以下来自Harbison和Steele的问题和答案是相关的(同上,第6章Ex.4):
允许有C吗
答复(同上,第382页):
这是允许的(如果是浪费的)
实现使用32位来
表示类型char
.不管
的实现、价值
sizeof(char)
始终为1.
虽然这没有具体解决这样的情况,比方说字节是8比特,而char
是这些字节中的4个(实际上用C99定义是不可能的,见下文),但是从C99标准和Harbison和Steele来看,sizeof(char) = 1
总是清晰的这一事实.
编辑:事实上(这是对你的upd 2问题的回答),就c99而言,第6.5.3.4节中的sizeof(char)
is字节:
sizeof运算符生成大小
因此,结合上面的引用,8位字节和char
作为其中4位的字节是不可能的:对于c99来说,一个字节等于一个char
.
在回答您提到的7位char
的可能性时:这在c99中是不可能的.根据本标准第5.2.4.2.1节,minimum为8:
其实现定义值的大小应等于所示值的or greater【我的重点】,并带有相同的符号.
-非位字段的最小对象的位数(字节)
**CHAR_BIT 8**
-类型为signed char的对象的最小值
**SCHAR_MIN -127//−(27−1)**
-类型为signed char的对象的最大值
**SCHAR_MAX +127//27−1**
-类型为unsigned char的对象的最大值
**UCHAR_MAX 255//28−1**
-char类型的对象的最小值
**CHAR_MIN** see below
-char类型的对象的最大值
**CHAR_MAX** see below
[.]
如果类型为char的对象的值