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]
。谢谢,我正在看下一行。。。。