为什么在Java 7中,对于相同值,在第二种情况下会有两个不同的答案?
class Ideone
{
public static void main (String[] args) throws java.lang.Exception
{
System.out.println("Case 1:");
long size=(long)1<<39;
System.out.println("size :"+size);
size=1024*1024*1024*512l;
System.out.println("size :"+size);
System.out.println("Case 2:");
size=(long)1<<41;
System.out.println("size :"+size);
size=1024*1024*1024*1024*2l;
System.out.println("size :"+size);
}
}
以下是Ideone给出的答案。
Case 1:
size :549755813888
size :549755813888
Case 2:
size :2199023255552
size :0
1024L*1024L*1024L*1024L*2L
,看看会发生什么。 - RealSkeptic512
是一个long
文字。你只需使用一个大的 int * 512L,然后将其保留为long
。 - Jorn Vernee