为什么C#中的sizeof(int*)=8,C++中的sizeof[int*]=4
Why is sizeof(int*) = 8 in C# and sizeof(int*) = 4 in C++
C#
sizeof(int*)
8
C++
sizeof(int*)
4
为什么会这样?同样,C#中的sizeof long是8。在C++中是4。
Simple:您正在获取指针类型的大小。8将是用于64位应用程序的适当大小。4将适用于32位应用程序。
有人会假设您正在使用64位.net和32位C++代码运行C#代码。
您在64-bit
上编译C#
程序,在32-bit
上编译C++
程序。
指针的大小取决于处理器体系结构。在32位上,所有指针都是32位(4字节)。在64位上,它们是64位(8字节)。
您一定已经将64位C#应用程序与32位C++应用程序进行了比较。
CCD_ 5在C#和C++中是不同的类型。在C++中,它是一个32位整数。在C#中,它是64位的。
操作系统和编译器的组合以及编译器的设置将决定指针和其他类型的大小。在所有现代64位处理器中,处理器(和大多数操作系统)都支持运行32位和64位可执行文件,因此根据设置,您可以获得32位或64位指针大小[其他类型可能会更改,也可能不会更改,具体取决于编译器和操作系统的组合]。
C、C#和C++没有固定大小的原因是允许为大量不同的处理器编译语言,包括具有24位整数大小或9位字符(和36位int
)的"奇怪"处理器
相关文章:
- sizeof(size_t) 可以小于 sizeof(int) 吗?
- 在 <char>sizeof(int) == 1 的平台中如何编码 char_traits::eof() ?
- 如何理解"vector<int> avector (arr, arr + sizeof(arr) / sizeof(arr[0]) )"?
- sizeof(int(123)) 是什么意思?
- C :用sizeof()operator在for for loop中增加一个int变量,只能工作一次
- x = malloc(n * sizeof (int));无法将 void 转换为 int
- 如何解释sizeof(std::vector<int>)的值?
- 为什么sizeof int是错误的,而sizeof(int)是正确的
- "new int[5]"和"malloc(5 * sizeof(int))"之间的C++有什么区别?
- C/C++:在32位机器上的sizeof(short)、sizeof(int)、sizeof(long)、size of
- C/C++:包含 int 和枚举的 typedef 结构的大小 == sizeof(int)
- 为什么 sizeof(int) 与 sizeof(int*) 不同
- 如何理解"C++ allows sizeof(char*) != sizeof(int*)"?
- 在这种情况下,sizeof(int) 返回什么
- 在32位或64位平台上,sizeof(int)=1
- sizeof类,在C++中有int,function,virtual函数
- 将-1移位到sizeof(int)在C++中生成两个不同的结果
- sizeof(int)是否始终等于sizeof(void*)
- 为什么C#中的sizeof(int*)=8,C++中的sizeof[int*]=4
- 当sizeof(int)=sizeof(long)时,long优于int的任何情况