3 回答
TA贡献1946条经验 获得超4个赞
存储单元被视为一个字符占用的存储量;类型对象的大小。char
因此是1。
编辑:在回答您最新的问题,以下的问题和回答是有关的哈比森和斯蒂尔(同上,Ex。4%CH.6)
是否允许有一个C实现
char
能代表从-2,147,483,648到2,147,483,647之间的数值吗?如果是的话,那会是什么呢?sizeof(char)
在执行中?什么是最小和最大的类型范围?int
?
允许(如果是浪费的)实现使用32位来表示类型。
char
..无论实现是什么,sizeof(char)
总是1。
虽然这并没有具体解决这样的情况,例如字节是8位和char
是其中的4个字节(实际上C99定义是不可能的,请参见下面的事实)sizeof(char) = 1
始终明确从C99标准和哈比森和斯蒂尔。
编辑:事实上(这是对你的UPD 2问题的回答),就C99而言sizeof(char)
是以字节为单位,再次来自第6.5.3.4节:
量值运算符产生其操作数的大小(以字节为单位)。
因此,结合上面的引号,8位字节和char
因为其中的4个字节是不可能的:对于c99来说,一个字节与char
.
作为对你提到的7位可能性的回应char
这在C99中是不可能的。根据标准5.2.4.2.1节,最小值是8:
其实现-定义的价值应相等。或更大[我的重点]在大小上显示的,有相同的标志。
-非位字段的最小对象的位数(字节)
**CHAR_BIT 8**
-有符号字符类型的对象的最小值
**SCHAR_MIN -127//−(27−1)**
-有符号字符类型的对象的最大值
**SCHAR_MAX +127//27−1**
-无符号字符类型对象的最大值
**UCHAR_MAX 255//28−1**
-字符类型对象的最小值
**CHAR_MIN** see below
-字符类型对象的最大值
**CHAR_MAX** see below
[...]
如果在表达式中使用char类型的对象的值被视为有符号整数,则char_min的值应与Schar_min的值相同,而char_max的值应与Schar_Max的值相同。否则,CHAR_min的值应为0,CHAR_max的值应与UCHAR_MAX的值相同。值UCHAR_MAX应等于2^CHAR_BIT−1。
TA贡献1842条经验 获得超12个赞
有些型号的模拟器件32位SHARC DSP的CHAR_BIT=32,而TMS 32F28xx的德州仪器DSP的CHAR_BIT=16,更新:有GCC 3.2为PDP-10使用char_bit=9(请检查归档文件中的include/Limited s.h)。
- 3 回答
- 0 关注
- 499 浏览
添加回答
举报