C++

c++里int和long的区别

Posted by Kerwen Blog on November 21, 2024

在C语言和C++中,int 和 long 的大小是由编译器和操作系统的组合决定的,而不是直接取决于操作系统的位数。

在通常的情况下,int 表示整数,而 long 表示较大的整数。在32位系统上,int 通常是32位,而 long 通常也是32位。在64位系统上,int 通常是32位,而 long 通常是64位。

不同编译编译模型所占的位数

Datetype LP64 ILP64 LLP64 ILP32 LP32
char 8 8 8 8 8
short 16 16 16 16 16
int 32 64 32 32 16
long 64 64 32 32 32
long long 64 64 64 64 64
pointer 64 64 64 32 32

一般情况下windows64位一般使用LLP64模型
64位Unix,Linux使用的是LP64模型

在Windows 64位机器上,我们用以下代码输出类型所占的字节数:

1
2
3
std::cout << sizeof(int)<<std::endl;
std::cout << sizeof(long) << std::endl;
std::cout << sizeof(long long) << std::endl;

输出结果为

1
2
3
4
4
8