`int` type size int C.

时间:2012-09-04 18:37:26

标签: c integer int

  

可能重复:
  Is int in C Always 32-bit?

AFAIK,Pascal大小为Integer取决于平台(在32位计算机上它有32位,而在64位计算机上它有64位)。

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

5 个答案:

答案 0 :(得分:4)

相当多,但编译器有控制权。如果您只想查看环境中发生的情况,请使用sizeof运算符。 stddef.h将包含类似int64_t的类型(我认为在该文件中),如果你需要确保修复字节数而不是将其留给环境/编译器。

答案 1 :(得分:2)

它不仅依赖于处理器架构,还依赖于操作系统。 C语言规范没有提到整数类型的大小,因此该任务是语言实现者的工作。请查看最高投票答案,了解更多背景信息:

What is the bit size of long on 64-bit Windows?

总之,在Linux和Windows上,'int'将是32位。对于其他平台,您必须在其C编译器文档中检查其规范。不过,最佳做法是使用<inttypes.h> - uint32_tint32_tuint64_tint64_t中的类型。

在Windows上,它有点困难; inttypes.h是C99的一部分,Visual C ++不会声明其符合性。您可以从http://code.google.com/p/msinttypes/等项目中获取inttypes.h,或使用<windows.h> - INT32INT64UINT32UINT64。还有Microsoft扩展程序__int32__int64__uint32__uint64,您不需要任何其他标头文件。

答案 2 :(得分:1)

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

只有规则是sizeof char&lt; = sizeof short&lt; = sizeof int&lt; = sizeof long

答案 3 :(得分:1)

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

但我强烈建议您不要编写依赖于int特定金额的代码。

答案 4 :(得分:0)

没错。这取决于平台。

但是,目前通常的做法是在32位或64位计算机上生成int 32位。 64位计算机上的long int类型为64位,即使在32位计算机上,long long int类型也是64位。

正如@ E_Net4正确观察到的那样,C ++标准允许从上面的答案中获得相当大的变化,这只能说明今天的惯例。 (C ++标准允许这样的变化,因为它希望让编译器可以自由地定义intlong int,更不用说short int,以最大化特定处理器性能的方式。)