Max HEX value for long type

前端 未结 4 1933
情书的邮戳
情书的邮戳 2021-01-21 23:38

I have ported Java code to C#. Could you please explain why I have compile-time error in the follow line (I use VS 2008):

    private long l = 0xffffffffffffffff         


        
4条回答
  •  耶瑟儿~
    2021-01-22 00:08

    Java doesn't mind if a constant overflows in this particular situation - the value you've given is actually -1.

    The simplest way of achieving the same effect in C# is:

    private long l = -1;
    

    If you want to retain the 16 fs you could use:

    private long l = unchecked((long) 0xffffffffffffffffUL);
    

    If you actually want the maximum value for a signed long, you should use:

    // Java
    private long l = Long.MAX_VALUE;
    // C#
    private long l = long.MaxValue;
    

提交回复
热议问题