在我的C#.NET项目中执行sizeof(int)
时,返回值为4。我将项目类型设置为x64,为什么它显示4而不是8?这是因为我正在运行托管代码吗?
在我的C#.NET项目中执行sizeof(int)
时,返回值为4。我将项目类型设置为x64,为什么它显示4而不是8?这是因为我正在运行托管代码吗?
int
是System.Int32
的别名,即使在64位计算机上仍需要4个字节。Byte
也可能是 64 位宽。 - DaiInt32
在x86和x64上都是4字节。无论哪种情况,Int64
都是8字节。C#中的int
类型只是System.Int32
的别名,在两个运行时环境下都相同。唯一会根据运行时环境而变化的类型是IntPtr
:
unsafe
{
var size = sizeof(IntPtr); // 4 on x86 bit machines. 8 on x64
}
int
指针或者 System.IntPtr
。在 x64 上它将会是 8 字节,在 x86 上则是 4 字节。指针的大小表明您的内存具有 64 位地址。(在 x64 上,System.IntPtr.Size
== 8)。
int
的含义无论在 x86 还是 x64 上都是 4 字节。也就是说,一个 int
总是对应于 System.Int32
。记住,int
只是编译器对基本类型Int32
的别名。因此,在64位平台上,int
仅有32位应该是显而易见的。
int i;
int size = BitConverter.GetBytes(i).GetLength(0);