是一个int 64
在我的C#源代码中,我可能已经将整数声明为:
int i = 5;
要么
Int32 i = 5;
在当前流行的32位世界中,它们是相同的。 然而,当我们进入一个64位的世界时,我是否正确地说以下内容会变得相同?
int i = 5;
Int64 i = 5;
不.C#规范严格地定义了int
是System.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?