两个编译器一个是VS2015,一个是MinGW64(GCC6.3)
#include <iostream>
using namespace std;
int main()
{
cout<<"Size of char="<<sizeof(char)<<endl;
cout<<"Size of pointer="<<sizeof(char*)<<endl;
cout<<"Size of short="<<sizeof(short)<<endl;
cout<<"Size of int="<<sizeof(int)<<endl;
cout<<"Size of long="<<sizeof(long)<<endl;
cout<<"Size of long long="<<sizeof(long long)<<endl;
cout<<"Size of float="<<sizeof(float)<<endl;
cout<<"Size of double="<<sizeof(double)<<endl;
cout<<"Size of long long="<<sizeof(long long)<<endl;
return 0;
}
VS编译运行结果:
32位:
Size of char=1
Size of pointer=4
Size of short=2
Size of int=4
Size of long=4
Size of long long=8
Size of float=4
Size of double=8
Size of long long=8
64位:
Size of char=1
Size of pointer=8
Size of short=2
Size of int=4
Size of long=4
Size of long long=8
Size of float=4
Size of double=8
Size of long long=8
下面是GCC6.3.0(mingw64),linux下long的大小为:32位程序--4字节,64位程序--8字节,windows不能通过long的大小来判断程序是32位还是64位,这是linux和windows差异之一。
GCC(mingw64):
32位:
Size of char=1
Size of pointer=4
Size of short=2
Size of int=4
Size of long=4
Size of long long=8
Size of float=4
Size of double=8
Size of long long=8
64位:
Size of char=1
Size of pointer=8
Size of short=2
Size of int=4
Size of long=4
Size of long long=8
Size of float=4
Size of double=8
Size of long long=8
GCC(linux):
32位:
Size of char=1
Size of pointer=4
Size of short=2
Size of int=4
Size of long=4
Size of long long=8
Size of float=4
Size of double=8
Size of long long=8
64位:
Size of char=1
Size of pointer=8
Size of short=2
Size of int=4
Size of long=8
Size of long long=8
Size of float=4
Size of double=8
Size of long long=8

本文对比了VS2015和MinGW64(GCC6.3)两种编译器环境下,32位与64位程序中各种基本数据类型的大小。包括char, pointer, short, int, long, long long, float, double等,并指出在Windows和Linux平台下long类型的大小区别。
2万+

被折叠的 条评论
为什么被折叠?



