У меня были вопросы об инкрементальных и декрементальных операторах. Я не мог понять, почему java дал эти результаты.Операторы приращения и сокращения в java
x = 5; y = 10;
System.out.println(z = y *= x++); // output is 50
x = 2; y = 3; z = 4;
System.out.println("Result = "+ z + y++ * x); // output is Result = 46
x = 5;
System.out.println(x++*x); // output is 30
x = 5;
System.out.println(x*x++); // output is 25
Например, во 2-й функции у Println является multiplicated без увеличения 1 и в 3-й функции х multiplicated с х + 1. Поскольку я знаю, что унарные приращения и унарные декременты имеют более высокий приоритет, чем арифметические операторы, то почему вторая вычисляется без увеличения 1 (y ++ * x = 3 * 2 = 6 и почему нет (y + 1) * x = 8?
Вы путали приоритет оператора с * порядком оценки *. –
Если встречается только приоритет, то зачем беспокоиться о наличии 'y ++' и '++ y'? :) – elnigno
Для второй строки, если вы впоследствии будете использовать переменную y в строке, y получит значение «4». Это не имеет никакого отношения к арифметическому порядку операторов, где * имеет приоритет над +. оператор preincrement немедленно использует значение incremented, а оператор postincrement увеличивает значение после выполнения операции. –