PHP Post и preincrement

Я нашел в PHP некоторые странные вычисления, например, это:

$c=5;

$r = $c + ($c++ + ++$c);

echo $r;

Почему результат 19, а не 17?

Спасибо

4

Решение

Результат должен быть не уточнен. Пожалуйста, прочитайте следующую спецификацию 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 (), порядок, в котором три функции
называется, не уточняется).

То же самое можно найти и в документации PHP:
введите описание изображения здесь

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]