我现在正在学习计算机架构。 为什么 Linux 和 Windows 操作系统之间的数据类型大小不同?
这是我的示例 C 代码。
#include<stdio.h>
int main(void)
{
printf ("\n-- General Data Type Size --\n");
printf ("char size : %d byte\n", (int)sizeof(char));
printf ("short size : %d byte\n", (int)sizeof(short));
printf ("int size : %d byte\n", (int)sizeof(int));
printf ("long size : %d byte\n", (int)sizeof(long));
printf ("double size : %d byte\n", (int)sizeof(double));
printf ("long double size : %d byte\n", (int)sizeof(long double));
printf ("\n-- Pointer Data Type Size -- \n");
printf ("char* size : %d byte\n", (int)sizeof(char*));
printf ("short* size : %d byte\n", (int)sizeof(short*));
printf ("int* size : %d byte\n", (int)sizeof(int*));
printf ("long* size : %d byte\n", (int)sizeof(long*));
printf ("double* size : %d byte\n", (int)sizeof(double*));
printf ("long double* size : %d byte\n", (int)sizeof(long double*));
return 0;
}
当我使用 Visual Studio 10 在 Windwos 10 64 位上编译并运行此代码时,它显示为:
然后,当我在我的 ubuntu 18.04 64 位上编译并运行这段代码时。它显示为:
Windows系统显示long double的大小是8字节,long是4字节。
但是 Ubuntu 显示 long double 的大小是 16 字节,long 是 8 字节。 为什么两个尺寸不同?两者都有 64 位环境,我想知道为什么它们有不同的值。如果您能解释一下,我将不胜感激。
很确定这是由于 Windows 到 ubuntu 编译器的差异,我相信它们对于不同类型有不同的大小。但我可能是错的。