32位的long型和int型都占四个字节,那么它们的取值范围是否一样?
不一样。
在一般的电脑中,int数据范围为-2147483648~2147483647[-2^31~2^31-1];
long取值范围:-2147483647 到 2147483647 ,即为 -(2^31 - 1) 到 (2^31 - 1)。
int 是 C 语言的基本整数类型,可以满足处理一般数据的需求。C 语言还提供了四个可以修饰 int 的关键字:short、long、signed,以及 unsigned。
扩展资料:
利用这四个关键字:short、long、signed,以及 unsigned,C 语言标准定义了以下整数类型:
1) short int(可简写为 short),和 int 一样,也是有符号整数
2) long int(简写:long),有符号整数
3) long long int(简写:long long),C99 标准添加的类型,有符号整数
4) unsigned int(简写:unsigned),无符号整数,不能表示负数
5) unsigned long int(简写:unsigned long),无符号整数,不能表示负数
6) unsigned short int(简写:unsigned short),无符号整数,不能表示负数
7) unsigned long long int(简写:unsigned long long),C99 添加的类型,无符号整数
8) 所有没有标明 unsigned 的整数类型默认都是有符号整数。
参考资料:百度百科-长整型
32位,long,int都是四个字节,最大取值都是一样的。
我写了测试代码,用无符号型int和long分别存储-1。然后打印出来就是最大值。
#include <stdio.h>
int main()
{
unsigned int intNum;
unsigned long longNum;
intNum=4294967295;
longNum=4294967295;
printf("sizeof(int)=%d,sizeof(long)=%d\n",sizeof(intNum),sizeof(longNum));
printf("uintMax=%u,ulongMax=%lu\n",intNum,longNum);
return 0;
}
long位数>=int。具体要看系统。
64位的Windows使用的是LLP64(long long and point 64)模型。参照下表:
按你的叙述来说, 可能是C/C++在32位编译器下.
long的完整写法应该是 long int
long int和int在32位编译器下都是4字节,效果完全相同,取值范围也一样.
但在其他编译器上就可能不一样.
long int固定为32位, int根据编译器而变.