可能是重复问题:
C语言中的int类型是否总是32位?
据我所知,在Pascal中,Integer的大小取决于平台(在32位计算机上为32位,在64位计算机上为64位)。
那么在C语言中是否也是这样呢?(我的意思是,在32位计算机上它的大小为32位,在64位计算机上为64位)
可能是重复问题:
C语言中的int类型是否总是32位?
据我所知,在Pascal中,Integer的大小取决于平台(在32位计算机上为32位,在64位计算机上为64位)。
那么在C语言中是否也是这样呢?(我的意思是,在32位计算机上它的大小为32位,在64位计算机上为64位)
大致上是这样的,但编译器有控制权。如果您只想检查环境中发生了什么,请使用sizeof
运算符。如果您需要确保字节数固定且不将其留给环境/编译器,则stddef.h将包括诸如int64_t
之类的类型(我认为在该文件中)。
stdint.h
似乎也可在 Windows 上使用! - moooeeeepC语言没有定义其整数类型的大小。您需要阅读编译器手册。
唯一的规则是sizeof char <= sizeof short <= sizeof int <= sizeof long
char
大小。有些平台上 char
不是 8 位。 - user395760short
可能具有填充位,使其在sizeof
中比char
更大,但具有相同的值范围。这可能是反常的,但实际上并不被sizeof
排序禁止。我认为整数提升规则暗示了int
至少具有与char
或short
一样多的值位,因此存在一些相对范围的限制。 - Steve Jessop这个决定是由编译器做出的,你可以通过输入以下代码来查看在你的特定情况下整数的大小(以字节为单位):printf("%d", (int)sizeof(int));
。
然而,我强烈建议你不要编写依赖于 int
大小为特定值的代码。
没错。这取决于平台。
然而,如今的通常做法是在32位或64位计算机上将int
设置为32位。在64位计算机上,long int
类型为64位,即使在32位计算机上,long long int
类型也是64位。
正如@E_Net4所观察到的那样,C++标准允许与上述答案相差很大的变化,这只涉及到了当今的通常做法。(C++标准允许这种变化是因为它希望编译器可以自由定义int
、long int
,更不用说short int
了,以最大化特定处理器的性能。)
long long int
实际上意味着它至少有 64 位。同样的,long int
至少有 32 位。 - E net4
int
定义为计算机的“自然字长” - 因此在64位系统上它肯定可以是64位。 - user529758int
对象具有执行环境体系结构建议的自然大小”,实现者将其视为非规范性或允许在“自然大小”的含义上有一定的灵活性--你可以选择指责他们的什么行为 :-) - Steve Jessop