Не могу понять почему выражение y >> x++ * z всегда равно 0

Делаю дз на курсах и не могу понять почему компилятор пишет что Result of 'y >> x++ * z' is always '0'. В консоли итоговый ответ 5. Подскажите пожалуйста почему же выражение равно нулю.

int x = 5, y = 10, z = 15;
x += y >> x++ * z;
System.out.println("Переменная х = " + x);

Ответы (1 шт):

Автор решения: Anton Shchyrov

Для начала смотрим на приоритет операторов в Java

  1. Постфиксный инкремент и декремент
  2. Префиксный инкремент и декремент
  3. Умножение, деление, нахождение остатка
  4. Сложение, вычитание
  5. И самое последнее - присвоение.

Теперь расставим скобки в вашем выражении

x += (y >> ((x++) * z));

Теперь распишем значение каждой скобки исходя из

int x = 5, y = 10, z = 15;
  1. x++ == 5,
  2. 5 * 15 == 75
  3. 10 >> 75 == 0
  4. 5 += 0 == 5
→ Ссылка