首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >整数是64位C#中的64位整数吗?

整数是64位C#中的64位整数吗?
EN

Stack Overflow用户
提问于 2008-10-02 21:13:47
回答 10查看 11.5K关注 0票数 30

在我的C#源代码中,我可能将整数声明为:

代码语言:javascript
复制
int i = 5;

代码语言:javascript
复制
Int32 i = 5;

在当前流行的32位世界中,它们是等价的。然而,当我们进入64位世界时,我说下面的内容将变得相同,这样说对吗?

代码语言:javascript
复制
int i = 5;
Int64 i = 5;
EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2008-10-02 21:15:19

不是的。C#规范严格定义了int是恰好32位的System.Int32的别名。改变这一点将是一个重大的突破性变化。

票数 47
EN

Stack Overflow用户

发布于 2010-07-15 02:45:35

C#中的int关键字被定义为System.Int32类型的别名,它(根据名称判断)是一个32位整数。对于规范:

CLI specification第8.2.2节(内置值和引用类型)中有一个表,其中包含以下内容:

  • System.Int32带符号的32位整数

C# specification第8.2.1节(预定义类型)有一个类似的表:

  • int -32位有符号整型

这保证了CLR中的System.Int32和C#中的int都是32位的。

票数 43
EN

Stack Overflow用户

发布于 2010-07-15 04:50:55

(TestInt)的大小会变成8吗?

不,sizeof(testInt)是错误的。testInt是一个局部变量。sizeof运算符需要一个类型作为其参数。这永远不会是8,因为它始终是一个错误。

VS2010将c#托管整数编译为4字节,即使在64位计算机上也是如此。

对,是这样。我注意到C#规范的18.5.8节将sizeof(int)定义为编译时常量4。也就是说,当您说sizeof(int)时,编译器只是将其替换为4;这就像您在源代码中说的是"4“一样。

有没有人知道C#中的标准“

”会不会变成64位?

绝不可能。C#规范的第4.1.4节规定,"int“是"System.Int32”的同义词。

如果你想要的是一个“指针大小的整数”,那么使用IntPtr。IntPtr在不同的架构上改变其大小。

票数 18
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/164643

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档