Weird java behavior with casts to primitive types

java

Solution

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`.

Problem

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) + (char) - (int) + (long) - 1; System.out.println(i); ```

Original source