编译器不同,宽度是不相同,分别如下:
16位编译器:
int: 2个字节
long: 4个字节
long long: 8个字节
unsigned long: 4个字节
32位编译器:
int: 2个字节
long: 4个字节
long long: 8个字节
unsigned long: 4个字节
64位编译器:
int: 4个字节
long: 8个字节
long long: 8个字节
unsigned long: 8个字节
具体范围,请看下图:
在32位系统上int和long的取值范围如下:
int取值范围:-2147483648 ~ 2147483647
long取值范围:-2147483648 ~ 2147483647
两者的范围是一样的,但是上面范围是vc6.0中查到的取值范围 ,C语言标准库中limits.h头文件中定义的取值范围。用户可以使用limits.h头文件中的INT_MIN、INT_MAX、LONG_MIN、LONG_MAX来查看int或者long类型的取值范围。
#include
#include
int main()
{
printf("int取值范围:%d ~ %d\n", INT_MIN, INT_MAX);
printf("long取值范围:%d ~ %d\n", LONG_MIN, LONG_MAX);
return 0;
}
32位机器上 int类型 最小-2^7二进制补码10000000,最大2^7-1二进制01111111
long类型最小-2^15二进制补码1000,0000,0000,0000,最大2^15-1二进制0111,1111,1111,1111