C语言 关于int和long类型的范围

两者的取值范围是各是多少?请分别用十进制和二进制数来表示,谢谢

编译器不同,宽度是不相同,分别如下:

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个字节


具体范围,请看下图:

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-05-27

  在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 <stdio.h>
#include <limits.h>
int main()

printf("int取值范围:%d ~ %d\n", INT_MIN, INT_MAX);
printf("long取值范围:%d ~ %d\n", LONG_MIN, LONG_MAX);
return 0;
}

第2个回答  推荐于2017-10-04
32位机器上 int类型 最小-2^7二进制补码10000000,最大2^7-1二进制01111111
long类型最小-2^15二进制补码1000,0000,0000,0000,最大2^15-1二进制0111,1111,1111,1111追问

请换算成十进制表示一下 谢谢

本回答被提问者采纳
相似回答