Как языки обрабатывают побочные эффекты составных операторов?

Предположим такую ​​ситуацию:

int a = (--t)*(t-2);
int b = (t/=a)+t;

В C и C ++ это неопределенное поведение, как описано здесь: Неопределенное поведение и точки последовательности

Однако как эта ситуация выглядит в:

  • JavaScript,
  • Java,
  • PHP ...
  • C #
  • ну, на любом другом языке, который есть составные операторы?

Я сейчас исправляю порт Javascript -> C ++, в котором это осталось незамеченным во многих местах. Я хотел бы знать, как другие языки обычно справляются с этим ... Неопределенный порядок каким-то образом специфичен для C и C ++, не так ли?

8
задан Community 23 May 2017 в 12:32
поделиться