首页 > 开发 > php > 正文

关于PHP 变量或非变量 及5和7版本之间 运算符的一些疑问 ?

2017-09-06 13:37:00  来源:网友分享
$a=10;echo ++$a+$a++; //5 为23 //7为22

这段代码 5 和 7 的结果为什么不同

$a = 1;echo 1+$a++;//2$a=1;echo $a+$a++;//3

上面的为什么为2

下面的计算顺数是否为($a+$a)+1 = 1+1+1

虽然工作中不会这么写 但是还是想理解运算顺序

解决方案

要理解程序运行时的顺序,要有一个 的概念。

$a=10;echo ++$a+$a++;

++$a+$a++
入栈顺序是 push ++$a push+push$a++
栈的运算顺序是后入先出,即:
pop $a++:此时 $a=11,但是$a++的值是10,因为先用再加。
然后pop+
然后pop++$a:此时$a=11 ,但是++$a的值是12,因为先加再用。

所以最终的值是22。
可以理解成 运算符是从右向左运算的

$a=1;echo $a+$a++;

也是这个道理。

以上仅是在下的一点拙见,是根据我对C的理解做出来的推测,已经在关于php $a+$a+$a++ 运算结果的疑问中找到答案,有兴趣的可以移步,英文好的同学可以移步What should be the output of echo ++$a + $a++