Я нашел в PHP некоторые странные вычисления, например, это:
$c=5;
$r = $c + ($c++ + ++$c);
echo $r;
Почему результат 19, а не 17?
Спасибо
Результат должен быть не уточнен. Пожалуйста, прочитайте следующую спецификацию PHP:
https://github.com/php/php-langspec/blob/master/spec/10-expressions.md
Хотя приоритет, ассоциативность и группировка круглых скобок контролируют
порядок, в котором применяются операторы, они не контролируют порядок
оценка самих условий. Если явно не указано в этом
спецификация, порядок, в котором операнды в выражении
оценивается относительно друг друга не уточняется. Смотрите обсуждение
выше об операторах, которые содержат точки последовательности. (Например,
в полном выражении $ list1 [$ i] = $ list2 [$ i ++], независимо от значения
$ i с левой стороны — старый или новый $ i, не указан.
Точно так же в полном выражении $ j = $ i + $ i ++, будет ли значение
$ i является старым или новым $ i, не определено. Наконец, в полном объеме
выражение f () + g () * h (), порядок, в котором три функции
называется, не уточняется).
Других решений пока нет …