【C/C++】int,long和long long的区别;int 、long 占多少字节?VS 下int、long、long long占多少字节。X86和X64下的区别。
先说理论以前学的是long 在32位系统中4字节,64位系统中8字节。但是实际用的时候发现不是,现在总结一下:对于long 来说:OSarchsizeWindowsIA-324 bytesWindowsIntel 644 bytesWindowsIA-644 bytesLinuxIA-324 bytesLinuxIntel 648 bytesLinuxIA-648 bytesMac OSIA-32
·
先说理论
以前学的是long 在32位系统中4字节,64位系统中8字节。但是实际用的时候发现不是,现在总结一下:
对于long 来说:
OS | arch | size |
---|---|---|
Windows | IA-32 | 4 bytes |
Windows | Intel 64 | 4 bytes |
Windows | IA-64 | 4 bytes |
Linux | IA-32 | 4 bytes |
Linux | Intel 64 | 8 bytes |
Linux | IA-64 | 8 bytes |
Mac OS | IA-32 | 4 bytes |
Mac OS | Intel 64 | 8 bytes |
VS下的测试:
cout << "sizeof(int) "<< sizeof(int) << endl;
cout << "sizeof(long) "<< sizeof(long) << endl;
cout << "sizeof(long long) "<< sizeof(long long) << endl;
cout << "sizeof(float) "<< sizeof(float) << endl;
cout << "sizeof(double) "<< sizeof(double) << endl;
cout << "sizeof(int*) "<< sizeof(int*) << endl;
1、X86 32位结果:
sizeof(int) 4
sizeof(long) 4
sizeof(long long) 8
sizeof(float) 4
sizeof(double) 8
sizeof(int*) 4
1、X86 64位结果:
sizeof(int) 4
sizeof(long) 4
sizeof(long long) 8
sizeof(float) 4
sizeof(double) 8
sizeof(int*) 8
可见windows下这几个变量只有指针是不同的。
总结
在为x64编译时,int和long之间的区别在0到4个字节之间,这取决于您使用的编译器。
GCC使用LP 64模型,这意味着在64位模式下,INT是32位,而LONG是64位。
又例如,MSVC使用LLP 64模型,这意味着INT和LONG都是32位,即使在64位模式下也是如此。
所以和实现平台和编译器都有关系
更多推荐
已为社区贡献1条内容
所有评论(0)