在C语言中,整数(对于32位机器)是32位,范围从-32,768到+32,767。 在Java中,整数(long)也是32位,但范围从- 2147,483,648到+ 2147,483,647。
我不明白Java中的范围是如何不同的,即使位数是相同的。有人能解释一下吗?
在C语言中,整数(对于32位机器)是32位,范围从-32,768到+32,767。 在Java中,整数(long)也是32位,但范围从- 2147,483,648到+ 2147,483,647。
我不明白Java中的范围是如何不同的,即使位数是相同的。有人能解释一下吗?
当前回答
实际上,int的长度(以比特为单位)取决于编译器的实现。
例如,在我的Ubuntu 64位上,我有32位的短,而在另一个32位的Ubuntu版本上,它是16位的。
其他回答
java int的严格等效是C中的long int。
编辑: 如果定义了int32_t,那么它在精度方面是等效的。长整型保证了Java整型的精度,因为它的大小保证至少为32位。
32位整数,取值范围为- 2147,483,648 ~ 2147,483,647。然而,你在32位机器上的事实并不意味着你的C编译器使用32位整数。
这是因为在32位机器上的C - integer并不意味着使用32位来存储它,它也可能是16位。它取决于机器(依赖于实现)。
C语言定义为各种数据类型指定了最小范围。对于int型,这个最小范围是-32767到32767,这意味着int型必须至少有16位宽。实现可以自由地提供更广泛的int类型和相应的更广泛的范围。例如,在我工作的SLES 10开发服务器上,范围是-2147483647到2137483647。
仍然有一些系统使用16位整型类型(All The World Is Not A VAX x86),但有很多系统使用32位整型类型,可能也有少数系统使用64位整型类型。
C语言被设计成可以在不同的体系结构上运行。Java被设计为在虚拟机中运行,从而隐藏了这些架构上的差异。
发帖者把他们的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