Я просто наткнулся на кусок кода, я нахожу интересным (потому что я никогда не видел его как вопрос прежде, чем в 2-х лет программирования)Java порядок старшинства
int x = 5;
int y = 3;
int z = y + (y+=1) % 4 + (x-=2)/3;
System.out.println(z);
Выход 4.
Мне интересно, почему левая часть 'y' сначала оценивается вместо '(y + = 1)', которая затем привела бы к результату 5. (другими словами, почему скобка не вынуждает порядок приоритета?)
Я не уверен, что искать, так как поиск «java order of Priorence» возвращает результаты tha t в лучшем случае показывает сложные примеры y ++, ++ y вроде вопросов или просто порядок таблицы приоритетов.
Я пометил Java, но я тестировал это с помощью C# и javascript, поэтому это, вероятно, общее в программировании.
Update
я ошиблась о порядке старшинства и порядка оценки.
Этот article помог мне лучше понять ответы.
Что странно в оценке самого левого срока? –
Вы не увидели бы это как вопрос, потому что любой программист, достойный его соли, не напишет что-то подобное. Эти вопросы совершенно бесполезны. – Kayaman
@JFMeier Я хотел бы знать, почему скобка '(y + = 1)' не была выполнена первой. – Stein121