PHP运算符优先级“未定义的评估顺序”?
作者:互联网
http://www.php.net/manual/en/language.operators.precedence.php#example-115
<?php
$a = 1;
echo $a + $a++; // may print either 2 or 3
?>
php手册中的例子并不能很好地解释.为什么不将$a计算为2,然后加到1,这样它总是变为echo 1 2 //等于3?我不明白它是如何“打印2或3”.我认为增量有“更高优先级”而不是添加?
换句话说,我不明白为什么不是……
$a = 1;
1) echo $a + $a++;
2) echo 1 + ($a = 1 + 1);
3) echo 1 + (2);
4) echo 3;
解决方法:
PHP中的运算符优先级是一个混乱,它可能会在版本之间发生变化.出于这个原因,最好使用括号对您的内联方程进行分组,以便它们的执行没有歧义.
当我被问到这个问题时,我通常给出的例子是反过来询问这个等式的答案是什么:
$a = 2;
$b = 4;
$c = 6;
$val = $a++ + ++$b - 0 - $c - -++$a;
echo $val;
标签:php,operator-precedence,operator-keyword 来源: https://codeday.me/bug/20191003/1846110.html