long digest=0x900000000L;就不会有问题。
0x900000000默认是int型

解决方案 »

  1.   

    在申明的地方,后面加L表示long型
    long      i=0x000000001L;
    long digest=0x900000000L;
    不然会是从int到long的默认造型
      

  2.   

    long digest=0x900000000;
    代码执行过程:
    1、将右值转变成int型(越界);
    2、将int型转化成long型;
    3、将long型值付值给digest。
    在第一步就出错。用long digest=0x900000000L;
    1、将右值转变成long型;
    2、将long型值付值给digest。