&&
должен иметь более высокий приоритет, чем ||
:Приоритет Java булево
int a = 10;
System.out.println(a==10 || --a==9 && a==8);
System.out.println(a);
печатается верно, и 10. Кажется, что он проверяет только первую часть, и если ее истинный второй никогда не выполняется.
Если я делаю a==9
, то вторая часть, кажется, оценивает и печатает 9. Может ли кто-нибудь объяснить, почему это происходит? Разве не стоит &&
?
Редактировать: Я вижу. a==10 || --a==9 && a==8
преобразуется в (a==10) || (a==9 && a==8)
Итак, если первый оценивает true, это короткие замыкания. Спасибо вам за помощь.
нет Более высокий приоритет, он просто идет слева направо .. – gtgaxiola
@gtgaxiola Осторожно, когда вы не говорите о преимуществе. Если не было приоритета. Если бы не было приоритета, выражение выражало бы true. – Cruncher
@Cruncher хороший catch .. – gtgaxiola