C 数据类型的最小大小是以位或字节定义的吗?
我知道C 数据类型的最小大小是以位或字节定义的吗?,c,types,byte,size,bit,C,Types,Byte,Size,Bit,我知道char中的位数在char\u BIT中定义,并且sizeof(char)始终为1。但是对于其他基本数据类型,它们的大小是相对于字符位定义的吗 例如,C中的int的最小大小定义为16位,但在其他站点(如)中,最小大小定义为2字节。哪个定义是正确的,因为一个字节不一定与8位相同。类型值的最小要求范围是以数字定义的,而不是以位或字节定义的。Say的定义如下: short int类型的对象的最小值 SHRT\u MIN-32767/-(215-1) short int类型的对象的最大值 SHR
char
中的位数在char\u BIT
中定义,并且sizeof(char)
始终为1。但是对于其他基本数据类型,它们的大小是相对于字符位定义的吗
例如,C中的int
的最小大小定义为16位,但在其他站点(如)中,最小大小定义为2字节。哪个定义是正确的,因为一个字节不一定与8位相同。类型值的最小要求范围是以数字定义的,而不是以位或字节定义的。Say的定义如下:
short int类型的对象的最小值
SHRT\u MIN
-32767/-(215-1)
short int类型的对象的最大值
SHRT_MAX
+32767//215-1
所有类型定义都与使用两个补码或符号大小表示(8位字节的倍数)实现类型相匹配。但因为它们只是极小值,所以不需要这样的表示
数据类型的最小大小是以位或字节定义的吗
大多数情况下,它是由C规范属性和字符位的组合定义的<代码>字符位>=8
int
有一个最小范围[-32767…32767],至少需要16位来对其进行编码
公共CHAR\u位==8
,即16位或2字节”
使用公共的CHAR\u BIT==16
,即16位或1“字节”。在此实现中,一个字节为16位
使用公共CHAR\u BIT==64
,即64位或1“字节”。64位,因为没有类型小于CHAR
像
(u)intN\u t
这样的精确大小整数类型有效地由位大小定义。它们也有最小/最大范围值,但并没有填充和2的补码要求有效地由位定义。注意:这些是可选类型
关于minnum位大小的一些深奥想法。其他数据类型是以
sizeof(char)
的整数倍定义的。任何结构,包括位字段和其他内容,都将占用*sizeof(char)*char bit
位,与*sizeof(char)
字节(字节,不一定是八位字节)相同如果CHAR\u BIT
为16,则int
的最小大小仍为16位,在本例中为1“字节”。是的,int\u MAX
为32767
或更大,32767
需要15+1位。因此,如果CHAR\u BIT
为8=>sizeof(int)>=2
;如果CHAR\code>为16=sizeof(int)>=1
其他数据类型的大小没有根据C标准中的CHAR\u BIT
定义,如果这是您的要求的话。根据标准,int
的最小大小是16位,而与CHAR\u BIT
无关int
必须至少表示[-32767..32767]范围内的值
,意思是int
必须至少有16位宽。它们可能更宽(并且在大多数现代平台上)。此外,至少16位并不意味着正好16位-古怪的平台可能有填充位,而这些填充位对值表示不起作用。9位平台可能使用18位来存储int,但两位是填充位,它仍然只存储范围[-32767..32767]
。谢谢,我正在看下一行。。。。