是一个int 64

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

int i = 5;

要么

Int32 i = 5;

在当前流行的32位世界中,它们是相同的。 然而,当我们进入一个64位的世界时,我是否正确地说以下内容会变得相同?

int i = 5;
Int64 i = 5;

不.C#规范严格地定义了intSystem.Int32一个别名,正好是32位。 改变这将是一个重大的突破性改变。


C#中的int关键字被定义为System.Int32类型的别名,这是(根据名称判断的)意思是一个32位整数。 符合规格:

CLI规范第8.2.2节(内置值和引用类型)具有以下表格:

  • System.Int32 - 有符号的32位整数
  • C#规范第8.2.1节(预定义类型)有一个类似的表格:

  • int - 32位有符号整型
  • 这保证了CLR中的System.Int32和C#中的int都将始终为32位。


    sizeof(testInt)会是8吗?

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

    即使在64位机器上,VS2010也会将ac#托管整数编译为4个字节。

    正确。 我注意到C#规范的第18.5.8节将sizeof(int)定义为编译时常量4.也就是说,当你说sizeof(int) ,编译器只是用4替换它; 就好像你在源代码中说“4”一样。

    有谁知道是否/什么时候C#中的标准“int”将会是64位?

    决不。 C#规范的4.1.4节声明“int”是“System.Int32”的同义词。

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

    链接地址: http://www.djcxy.com/p/21047.html

    上一篇: Is an int a 64

    下一篇: What is the difference between int, Int16, Int32 and Int64?