为什么以下代码打印的结果是-1486618624,这个结果是怎么得出来的啊,谢谢
       int a=1000000000;
       int b= 1000000000;
       int c=a*b;
      System.out.print(c);

解决方案 »

  1.   

    结果超出整数的范围,溢出了,改成这样吧        int a=1000000000;
           int b= 1000000000;
           long c=(long)a*b;
          System.out.print(c);
      

  2.   

    java中int 类型的范围是:-2147483648 到2147483648
    你这一乘,超过了不知道多少……
      

  3.   

    所以你要这样算
    (long)c=(long)a*(long)b
      

  4.   

    我努力让自己冷静int型范围:-32768~32767
      

  5.   

    用长整型long,你的结果溢出了
      

  6.   

    溢出大整数如何乘?see below:
    BigInteger n1 = new BigInteger("987654321987654321987654321");
    BigInteger n2 = new BigInteger("123456789123456789123456789");
    BigInteger result = null;
    result = n1.multiply(n2);
    System.out.println("积:" + result.toString());/*
    output:
    积:121932631356500531591068431581771069347203169112635269*/
      

  7.   

    int 类型只有4个字节,你乘后  的结果  4个字节是表示不了的
      

  8.   

    益处问题的教材吧:
    int a=1000000000;
    int b= 1000000000;
    long c=(long)a*b;
    System.out.print(c);正解