为什么这两个后期增加的PHP给出了相同的答案?
参见英文答案 >
PHP operator precedence “Undefined order of evaluation”?3个
我试图通过localhost在PHP中运行以下代码,但它给出了意想不到的输出! <?php $a = 1; echo ($a+$a++); // 3 ?> //答案是3,但由于后期增加,答案应为2 <?php $a = 1; echo ($a+$a+$a++); ?> //答案仍然是3 !!!
PHP手册说明如下:
那么归结为什么,PHP没有明确定义这些类型的语句的最终结果,甚至可能在PHP版本之间发生变化.我们称之为未定义的行为,您不应该依赖它. 您可能能够在源中的某处找到确切原因,为什么选择此顺序,但可能没有任何逻辑. 您的两个示例正在评估如下: <?php $a = 1; echo ($a + $a++); // 3 ?> 真的变成了: <?php $a = 1; $b = $a++; echo ($a + $b); // a = 2,b = 1 ?> 你的第二个例子: <?php $a = 1; echo ($a + $a + $a++); // 3 ?> 变为: <?php $a = 1; $b = $a + $a; $a++; echo $b + $a; // 3 ?> 我希望这是有道理的.你是对的,这背后没有硬性逻辑. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |