关于integer:`int` type size int C.

`int` type size int C

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
Is int in C Always 32-bit?

afaik的整数大小取决于平台(在32位计算机上它有32位,在64位计算机上它有64位)。

这在C中是相同的吗(我的意思是,在32位计算机上,它的大小是32位,在64位计算机上是64位)?


差不多,但编译器有控制权。如果您只想检查环境中发生了什么,请使用sizeof操作符。如果需要确保字节数是固定的,而不是由环境/编译器来决定的话,stddef.h将包括像int64_t这样的类型(我认为在该文件中)。


它不仅依赖于处理器体系结构,还依赖于操作系统。C语言规范没有提到整数类型的大小,因此任务是语言实现者的工作。请看下面的最热门答案了解更多背景:

64位窗口上long的位大小是多少?

总之,在Linux和Windows上,"int"都是32位的。对于其他平台,您必须在它们的C编译器文档中检查它们的规范。然而,最佳实践是使用--uint32_tint32_tuint64_tint64_t中的类型。

在Windows上,这有点困难;EDCOX1 15是C99的一部分,Visual C++不要求遵从。你可以从http://code.google.com/p/msinttypes/等项目中获得inttypes.h,或者使用INT32INT64UINT32UINT64。还有微软的扩展名__int32__int64__uint32__uint64,你不需要额外的头文件。


这个决定是由编译器做出的,您可以通过键入以下内容来查看特定情况下整数的大小(以字节为单位):printf("%d", (int)sizeof(int));

不过,我强烈建议您不要编写依赖于int大小的特定数量的代码。


C不定义其整数类型的大小。你必须阅读编译器手册

唯一的规则是sizeof char<=sizeof short<=sizeof int<=sizeof long


这是正确的。这取决于平台。

然而,现在的惯例是在32位或64位计算机上生成一个int32位。在64位计算机上,long int类型为64位,而在32位计算机上,long long int类型为64位。

正如@ EyNET4正确地观察到的,C++标准允许从上面的答案中得到很大的变化,这只是今天的惯例。(C++标准允许这样的变体,因为它希望让编译器自由地定义EDCOX1×2和EDCOX1×3,更不用说EDCOX1×7,以最大化特定处理器的性能的方式。)