C ++中字长,字符大小,整数大小和字节之间的关系是什么?
答案 0 :(得分:7)
标准要求某些类型具有最小大小(short至少为16位,int至少为16位等),并且某些类型的组是有序的({{1} }> = sizeof(int)
> = sizeof(short)
)。
答案 1 :(得分:5)
在C ++中,char必须足够大才能在实现的基本字符集中保存任何字符。
int
具有“执行环境架构所建议的自然大小”。请注意,这意味着 not 的int的大小至少需要为32位。 int
为16位的实现很常见(想想嵌入式MS-DOS)。
以下内容摘自C ++ 98和C99标准的各个部分:
long int
必须至少与int
int
必须至少与short
short
必须至少与char
请注意,它们的大小可能相同。
另外(假设有两个补码实现):
long int
必须至少为32位int
必须至少为16位short
必须至少为16位char
必须至少为8位答案 2 :(得分:4)
标准不知道处理器使用的这个“字”。但是它说“int”类型应该具有执行环境的自然大小。但即使对于64位环境,int通常也只有32位。因此,标准术语中的“单词”几乎没有共同的含义(当然,除了常见的英语“单词”)。
字符大小是字符的大小。取决于你谈到的角色。字符类型是char,unsigned char和signed char。另外wchar_t用于存储可以具有任何大小的字符(由实现确定 - 但必须使用其中一个整数类型作为其基础类型。很像枚举),而char / signed char或unsigned char必须有一个字节。这意味着一个字节具有与一个字符一样多的位。如果一个实现说char类型的一个对象有16位,那么一个字节也有16位。
现在一个字节是一个char占用的大小。它是一个单位,而不是某种特定类型。没有更多关于它,只是它是你可以访问内存的单位。即,您没有指向位字段的指针,但您可以访问从一个字节开始的单位。
“整数大小”现在相当广泛。你什么意思?所有bool,char,short,int,long和他们的unsinged对应都是整数。它们的范围是我所谓的“整数大小”,它在C标准中记录 - 由C ++标准接管。对于有符号的char,范围是-127 - < - >。在图127中,简而言之,它是相同的并且是-2 ^ 15 + 1< - >。 2 ^ 15-1并且长时间为-2 ^ 31 + 1 - 。 2 ^ 31-1。它们的无符号对应物的范围分别为0到2 ^ 8-1,2 ^ 16-1和2 ^ 32-1。然而,这些是最小的尺寸。也就是说,int在任何平台上的最大大小可能不是2 ^ 14,因为当然小于2 ^ 15-1。对于那些需要最少位的值。对于8的char,对于16的短/ int,对于32的long是32.不需要对负数进行二进制补码表示,这就是为什么负值不是-128
而不是{{1}例如对于signed char。
答案 3 :(得分:3)
标准C ++没有名为word
或byte
的数据类型。其余的很好地定义为范围。基数是char
,其CHAR_BITS
位。最常用的CHAR_BITS值是8.
答案 4 :(得分:1)
sizeof(char)== 1(一个字节)(在c ++中,在C中 - 未指定)
sizeof(int)> = sizeof(char)
word - 不是c ++类型,通常在计算机体系结构中它意味着2个字节
答案 5 :(得分:0)
有点取决于你的关系是什么意思。数字类型的大小通常是机器字大小的倍数。一个字节是一个字节是一个字节--8位,不多也不少。标准中将字符定义为我认为的单个无符号字节(请查看ARM的详细信息)。
一般规则是,不要对数据类型的实际大小做任何假设。该标准指定类型之间的关系,例如“long”整数将是相同的大小或大于“int”。该语言的各个实现将为方便它们的类型选择特定大小。例如,64位处理器的编译器将选择与32位处理器的编译器不同的大小。
您可以使用sizeof()运算符来检查您正在使用的编译器的特定大小(在特定目标体系结构上)。