AFAIK,Pascal大小为Integer取决于平台(在32位计算机上它有32位,而在64位计算机上它有64位)。
在C中是否相同(我的意思是,在32位计算机上,它的大小是32位,在64位上是64位)?
答案 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_t
,int32_t
,uint64_t
,int64_t
中的类型。
在Windows上,它有点困难; inttypes.h
是C99的一部分,Visual C ++不会声明其符合性。您可以从http://code.google.com/p/msinttypes/等项目中获取inttypes.h
,或使用<windows.h>
- INT32
,INT64
,UINT32
,UINT64
。还有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 ++标准允许这样的变化,因为它希望让编译器可以自由地定义int
和long int
,更不用说short int
,以最大化特定处理器性能的方式。)