Guy*_*Guy 28 c# 64-bit primitive 32-bit
在我的C#源代码中,我可能已将整数声明为:
int i = 5;
要么
Int32 i = 5;
在目前流行的32位世界中,它们是等价的.但是,当我们进入64位世界时,我是否正确地说以下内容会变得相同?
int i = 5;
Int64 i = 5;
Jon*_*eet 46
不.C#规范严格定义了这int是一个System.Int32具有正好32位的别名.改变这将是一个重大的突破性变化.
Eri*_*ert 17
sizeof(testInt)会是8吗?
不,sizeof(testInt)是一个错误.testInt是一个局部变量.sizeof运算符需要一个类型作为其参数.这永远不会是8因为它总是会出错.
VS2010将ac#托管整数编译为4字节,即使在64位机器上也是如此.
正确.我注意到C#规范的第18.5.8节定义sizeof(int)为编译时常量4.也就是说,当你说   sizeof(int)编译器只是用4替换它时; 就像你在源代码中说"4"一样.
有没有人知道C#中标准的"int"是64/bit的时间是什么时候?
决不.C#规范的4.1.4节规定"int"是"System.Int32"的同义词.
如果你想要的是一个"指针大小的整数",那么使用IntPtr.IntPtr在不同的体系结构上更改其大小.
Blu*_*eft 11
intInt32在所有平台上始终是同义词.
微软将来不太可能改变它,因为它会破坏许多假定int为32位的现有代码.
我认为你可能会感到困惑的是它int是一个别名,Int32所以它总是4个字节,但是IntPtr假设它与CPU架构的字大小匹配,所以它在32位系统上是4个字节,在8个字节上是8个字节一个64位系统.
| 归档时间: | 
 | 
| 查看次数: | 8910 次 | 
| 最近记录: |