艾丽游戏ing

longlongint范围 longlong型数据范围

艾丽游戏ing 1

c语言中int,long的取值范围是多少?为什么是这么多?(32位机)

其实这个很简单 不需要问 直接写个程序

longlongint范围 longlong型数据范围longlongint范围 longlong型数据范围


uint i=-1;

ulong l = -1;

printf("%d %l", i, l);

看一下就知道了

Int 的 范围:-2147483648 ~ 2147483647。

Long 的 范围:-9223372036854775808 ~ 9223372036854775807public class Test。System.out.println("Int 的 范围:"+Integer.MIN_VALUE+" ~ "+Integer.MAX_VALUE)。

System.out.println("Long 的 范围:"+Long.MIN_VALUE+" ~ "+Long.MAX_VALUE)。

int和long作为基本的整数类型,取值范围和位数直接相关。如果是n位整数的话,最高位表示符号位,剩下的n-1位以补码形式表示绝对值,因此范围是整数区间[-2^(n-1),2^(n-1))。

int和long并没有明确位数,具体和平台相关(有一点可以确定,sizeof(int)<=sizeof(long))。一般而言,32位机的int是32位的,于是范围是[-2^31, 2^31)也就是[-2147483648, -2147483648)。而非int的位数取决于机器字长外还决定于软件平台(操作系统、编译器)上实现的特定的C语言数据模型(专指整数数据模型,不是数据库里讨论的那个),只是一般32位平台上的long都比较统一(基本上都是LP32),为32位,范围和int一致。(如果是64位平台,除了Windows上的LLP64模型中long是32位外,LP64、ILP64、SILP64的long都是64位)。

另外LS错误。首先用的无符号整数写法是错误的,其次printf使用不当(应该用字长无关的%i保证结果正确),再次结果意义不明确。

unsigned int i= -1;

unsigned long l = -1;

printf("%i %i", i, l);

-1转换为无符号数后表示负数的符号位“1”被作为最高非符号位,输出的是无符号整数的最大值。

printf("%i %i", i >> 1, l >> 1);

输出有符号整数最大值,该值加1再乘以-1后即得有符号整数最小值。

====

[原创回答团]

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

在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

", INT_MIN, INT_MAX);

printf("long取值范围:%d ~ %d

", 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

你懂int类型吧,int 在内存占两个字节 ,范围是-32768~32767

而long long在内存占八个字节, 范围是-922337203685775808~922337203685775807

long long int不是所有编译器都支持的,有些支持这种数据类型的,可能是真支持,也可能是模拟支持,总之它不是标准类型。

64位长长整型,最大值为9223372036854775807

longlongint的范围-9223372036854775808~9223372036854775807。

longlongint”在C语言中是64位长整型数据类型,将变量定义为longlongint即可。intlongint、longlongint各自能够表示为int范围是-2147483648~2147483647,

longint范围是-2147483648~2147483647,

longlongint范围是-9223372036854775808~9223372036854775807。

32位的long型和int型都占四个字节,那么它们的取值范围是否一样?

32位,long,int都是四个字节,最大取值都是一样的。

我写了测试代码,用无符号型int和long分别存储-1。然后打印出来就是最大值。

#include

64位的Windows使用的是LLP64(long long and point 64)模型。参照下表:

答:32位的long型和int型都占四个字节,那么它们的取值范围是同样的。

可以用以下语句查询(需要limits.h头文件):

printf(" INT_MAX = %d

这个得看你用的是什么程序语言和什么编译器.

按你的叙述来说, 可能是C/C++在32位编译器下.

long的完整写法应该是 long int

long int和int在32位编译器下都是4字节,效果完全相同,取值范围也一样.

但在其他编译器上就可能不一样.

long int固定为32位, int根据编译器而变.

一样。

只要确认int和long都占据四个字节,那么就是一样的。你可以看看limits.h头文件中对于int和long取值范围的定义。

在codeblock中见到的limits.hint和long的取值范围如下:

#define INT_MAX 2147483647

#define INT_MIN (-INT_MAX-1)

#define LONG_MAX 2147483647L

#define LONG_MIN (-LONG_MAX-1)

只要是32位,4个字节,那取值范围就是一样的,long和int的字节数是取决于编译器的,一般来说long是32位,int是16位。 可以在编译器里编写个小程序,输出long变量和int变量的最大值看看

一样,你可以通过定义一个数为long和int型 然后令他等于比较大到显示不了就可以测出来是一样的

一样,但是并不是所有时候int和long都是4个字节,这取决于操作系统和编译器。

取值范围是一样的 都是四个字节

至于为什么还要保留long,可能是为了兼容性吧 。

long类型与int类型的在都是占4个字节时,其取值范围一模一样

在16位编译器下不同,其它编译器下相同。 理由如下:

在C语言中,int的表示范围,是依赖于编译器的,而long int,也就是long则是固定的。

所以二者范围是否相同取决于编译器。

一、16位编译器:

1、int占2字节,取值范围为-32768~32767.

2、long 占4字节, 取值范围为-2147483648~2147483647

二者不同。

二、32位编译器及64位编译器。

int和long都占4字节, 取值范围相同, 均为-2147483648~2147483647。

此时二者相同。