Это мой первый пост здесь, поэтому, пожалуйста, простите любые ошибки протокола.
Мой вопрос просто пытается понять, что происходит со следующим кодом Java. Я полностью понимаю, что использование круглых скобок могло бы все прояснить, но полученный результат, кажется, идет вразрез с соглашением относительно порядка операций Java.
public class Tester
{
public static void main(String[] args)
{
int total=9, num=13;
if (total>4 || ++num>15 && total>0)
{
System.out.println("short");
}
System.out.println(num);
}
}
Вывод :короткая 13
Очевидно, что ++num не выполнился. Если бы соблюдался строгий порядок действий, это должно было произойти в первую очередь. Это не так. Итак, далее идет &&. Если && выполняется в порядке приоритета над ||, то то же самое... сначала должно произойти ++num. Это не так. Итак, мне кажется, что вывод был определен с помощью || выполняется первым, сокращая ++num, а затем, работая с &&, приводит к выводу короткого . Был ли просто игнорирован порядок выполнения правил и логическое выражение выполнялось слева направо? Является ли оператор приращения причиной неправильного поведения?
Спасибо за любое понимание того, что на самом деле происходит с этим кодом.