在C语言中,整数(对于32位机器)是32位,范围从-32,768到+32,767。 在Java中,整数(long)也是32位,但范围从- 2147,483,648到+ 2147,483,647。

我不明白Java中的范围是如何不同的,即使位数是相同的。有人能解释一下吗?


当前回答

在C语言中,整数(对于32位机器)是32位,范围从-32768到+32767。

错,32位有符号整数在2的补式表示中的范围是-231到231-1,等于-2,147,483,648到2,147,483,647。

其他回答

发帖者把他们的java类型搞混了。 在java中,他的C in是一个简短的: 短(16位)= -32768 ~ 32767 Int(32位)= -2,147,483,648到2,147,483,647

http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html

32位整数,取值范围为- 2147,483,648 ~ 2147,483,647。然而,你在32位机器上的事实并不意味着你的C编译器使用32位整数。

在标准C语言中,你可以使用INT_MAX作为最大的“int”值,这个常量必须在“limits.h”中定义。为其他类型(http://www.acm.uiuc.edu/webmonkeys/book/c_guide/2.5.html)定义了类似的常量,如所述,这些常量依赖于实现,但根据标准中指定的每种类型的最小位有一个最小值。

在C语言中,__int32的范围是-2147483648到2147483647。看这里的全范围。

unsigned short 0 to 65535
signed short –32768 to 32767
unsigned long 0 to 4294967295
signed long –2147483648 to 2147483647

不能保证'int'将是32位,如果你想使用特定大小的变量,特别是在编写涉及位操作的代码时,你应该使用'标准整数类型'。

在Java中

int数据类型是一个32位有符号的二补整数。它的最小值为-2,147,483,648,最大值为2,147,483,647(含)。

这是因为在32位机器上的C - integer并不意味着使用32位来存储它,它也可能是16位。它取决于机器(依赖于实现)。