Подтвердить что ты не робот

Концепция точки последовательности в java

Я новичок в Java и имею опыт работы с C. Я просматриваю книгу Халида Мохала. На странице 126 он приводит пример как

   int i = 10;

   int k = ++i + --i; // ((++i) + (--i)).

Это явно нарушает концепцию точки последовательности, как и в C, в которой говорится, что вы не можете изменять значение переменной более одного раза с той же точкой последовательности. Мой вопрос заключается в том, что одно и то же правило точки точки применяется в java или нет? Возможно, он привел этот пример только для объяснения концепции префикса унарного оператора и его побочного эффекта, но такой пример, который явно нарушает очень фундаментальное правило языка, не ожидается в книге, известной как Халид Мохал.

Итак, пожалуйста, подтвердите это.

Надеюсь, вы, люди, возьмите его в надлежащий дух.

Спасибо,

Mawia

4b9b3361

Ответ 1

В моем вопросе применяется одно и то же правило точки точки в java или нет?

Нет, в Java нет точек последовательности. Порядок оценки (и т.д.) Хорошо определен в Java.

Также прочитайте этот ответ.

Ответ 2

Нет, в java нет понятия точек последовательности, а порядок полностью определен. Вообще говоря, выражения оцениваются слева направо. Для формального определения вы можете прочитать JLS, раздел 15.7, о порядке оценки. См. эту ссылку.