- 32位编译器,int和long一般都设置为4字节。
例如i686-w64-mingw32-gcc.exe. - 64位编译器,Linux平台long一般提升到8字节,int一般保持为4字节;Windows平台long和int保持为4字节,用long long表示8字节。这是由于Win64使用LLP64模型,Linux 64位使用LP64.
- 关于Windows 64位LLP64模型,可参考: Why did the Win64 team choose the LLP64 model?
Ubuntu 22.04 64位系统默认gcc是64位,可执行文件在/usr/bin/x86_64-linux-gnu-gcc,Windows 10 64位Cygwin gcc.exe同样也是64位,编译代码printf("%d %d\n", sizeof(int), sizeof(long))会得到"4 8". 如果换成上面提到的i686-w64-mingw32-gcc.exe编译,得到"4 4".
