Weird java behavior with casts to primitive types

后端 未结 3 1864
不知归路
不知归路 2020-11-27 05:39

This was probably asked somewhere but I couldn\'t find it. Could someone clarify why this code compiles and prints out 1?

long i = (byte) + (cha         


        
3条回答
  •  余生分开走
    2020-11-27 06:06

    It's being parsed as this:

    long i = (byte)( +(char)( -(int)( +(long)(-1) ) ) );
    

    where all the + and - operators are unary + or -.

    In which case, the 1 gets negated twice, so it prints out as a 1.

提交回复
热议问题