在我的C#源代码中,我可能将整数声明为:
int i = 5;或
Int32 i = 5;在当前流行的32位世界中,它们是等价的。然而,当我们进入64位世界时,我说下面的内容将变得相同,这样说对吗?
int i = 5;
Int64 i = 5;发布于 2008-10-02 21:15:19
不是的。C#规范严格定义了int是恰好32位的System.Int32的别名。改变这一点将是一个重大的突破性变化。
发布于 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位的。
发布于 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在不同的架构上改变其大小。
https://stackoverflow.com/questions/164643
复制相似问题