Странное поведение java с приведениями к примитивным типам Вероятно, это было спрошено где-то, но я не мог найти его. Может кто-то уточнить, почему этот код компилирует и распечатывает 1? long i = (byte) + (char) - (int) + (long) - 1; System.out.println(i); Ответ 1 Он анализируется следующим образом: long i = (byte)( +(char)( -(int)( +(long)(-1) ) ) ); где все операторы + и - являются унарными + или -. В этом случае 1 дважды сбрасывается, поэтому он выводится как 1. Ответ 2 Потому что "+" и "-" - это унарные операторы, а роли работают над операндами этих унарников. Остальное - математика. Ответ 3 Унарные операторы и кастинг:) +1 легально (байт) + 1 отличает +1 к байту. подлый! Заставлял меня думать.
Ответ 1 Он анализируется следующим образом: long i = (byte)( +(char)( -(int)( +(long)(-1) ) ) ); где все операторы + и - являются унарными + или -. В этом случае 1 дважды сбрасывается, поэтому он выводится как 1.
Ответ 2 Потому что "+" и "-" - это унарные операторы, а роли работают над операндами этих унарников. Остальное - математика.
Ответ 3 Унарные операторы и кастинг:) +1 легально (байт) + 1 отличает +1 к байту. подлый! Заставлял меня думать.