C int变量的大小

C int变量的大小,c,int,32bit-64bit,processor,x86,C,Int,32bit 64bit,Processor,X86,int的大小是如何决定的 int的大小取决于处理器,这是真的吗。对于32位机器,它将是32位,对于16位,它是16位 在我的机器上,它显示为32位,尽管机器上安装了64位处理器和64位Ubuntu。这取决于编译器 例如:尝试一个旧的turboc编译器&它会给出int的16位大小,因为在编写编译器时,字的大小(处理器可以用最少的努力处理的大小)是16。这取决于实现。C标准唯一能保证的是 sizeof(char) == 1 及 sizeof(char)它取决于主编译器。 如果使用turbo c,则

int的大小是如何决定的

int的大小取决于处理器,这是真的吗。对于32位机器,它将是32位,对于16位,它是16位


在我的机器上,它显示为32位,尽管机器上安装了64位处理器和64位Ubuntu。

这取决于编译器


例如:尝试一个旧的turboc编译器&它会给出int的16位大小,因为在编写编译器时,字的大小(处理器可以用最少的努力处理的大小)是16。

这取决于实现。C标准唯一能保证的是

sizeof(char) == 1


sizeof(char)它取决于主编译器。
如果使用turbo c,则表示整数大小为2字节。
否则,您使用的GNU编译器意味着整数大小为4字节。

它只取决于C编译器中的实现。

整数的大小基本上取决于系统的
体系结构。
通常,如果您有一台
16位
机器,那么您的
编译器将必须支持
大小为2字节的整数。
如果您的系统是32位的,那么编译器必须支持4字节的整数

更详细地说,

  • 数据总线
    的概念出现在图中是的,16位、32位仅表示系统中数据总线的
    大小
  • 数据总线的大小是确定整数大小所必需的,因为数据总线的目的是向处理器提供数据。它在一次提取时可以向处理器提供的最大值很重要,编译器首选此最大值,以便在每次提取时提供数据
  • 根据系统的数据总线大小,编译器 设计用于提供数据总线的最大大小作为整数的大小

对<代码>整数
大小取决于编译器大小。
对于16位整数,整数的范围在-32768到32767之间。对于32和64位编译器,它将增加。

使
int
尽可能宽并不是最佳选择。(由设计师选择。)

像x86-64这样的64位体系结构可以有效地在
int64\t
上运行,因此
long
自然是64位的。(微软在x86-64 ABI中将
long
保留为32位,因为考虑到现有的代码库和API,各种可移植性原因都是有意义的。这基本上是不相关的,因为实际上关心类型大小的可移植代码应该使用
int32\t
int64\t
,而不是对
int进行假设

在许多情况下,拥有
int
be
int32\t
实际上可以获得更好、更高效的代码。
int
数组的每个元素仅使用4B,其缓存占用空间仅为
int64\t
数组的一半。此外,特定于x86-64,32位操作数大小是默认值,因此64位指令需要一个额外的代码字节作为REX前缀。因此,使用32位(或8位)整数比使用16位或64位整数的代码密度更好。(有关文档/指南/学习资源的链接,请参见wiki。)

如果程序需要64位整数类型才能正确运行,则不会使用
int
。(将指针存储在
int
而不是
intptr\t
中是一个bug,我们不应该让ABI更糟糕,以适应这样的坏代码。)编写
int
的程序员可能希望使用32位类型,因为大多数平台都是这样工作的。(当然,标准只保证16位)

由于不期望
int
通常为64位(例如在32位平台上),将其设置为64位会使一些程序变慢(几乎没有程序变快),
int
在大多数64位ABI中为32位。


此外,32位整数类型需要有一个名称,
int32_t
才能成为
typedef
的名称。

这还取决于编译器,因为C并没有说明int的确切大小。的可能重复是(非常)迂腐的;对于
sizeof int
,它将给出
2
,一个字节中有
CHAR\u位
sizeof
返回字节数,一个字节中不必有8位。我遇到一个编译器,它的
short-long
int
是16位,而
short-long
是24位。@detly该编译器的创建者当然有幽默感。是的,
double
的大小被称为“24或32”。这是一个微处理器。这些保证是不完整的。还必须是
CHAR\u位
至少为8,
sizeof(int)*CHAR\u位
必须至少为16,等等。严格来说,标准对整数类型的范围提出了要求,而不是其大小。在存在填充位的情况下,如果
int
的填充位多于
long
,则可能具有
sizeof(long)
。(这样的实现不太可能。)thanx关于信息,64位>Linux上的内容…在64位系统中,数据总线的大小为64位,编译器也显示了4字节测试概念是,在64位计算机中,编译器最多支持8字节数据,但这并不意味着它不能支持4字节。简单地说,较低的系统可以与较高的系统兼容,因此,系统是64位的,但编译器最多支持32位。因此,它显示为4字节,请检查最新的编译器版本。
sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long) <= sizeof(long long)
x06->16-bit->DOS->turbo c->size of int->2 byte
x306->32-bit>windows/Linux->GCC->size of int->4 byte