递增运算符的前置和后置的主要区别:
1、 i++ i的值直接运算,++i 加1后的值再运算。
2、 i++ 不能作为左值,而++i 可以。
毫无疑问大家都知道第一点(不清楚的看下下面的实现代码就了然了)。
我们重点说下第二点。左值是指对应内存中有确定存储地址的对象的表达式的值,而右值指除了左值之外表达式的值。
一般来说,左值是可以放到赋值符号左边的变量。但能否被赋值不是区分左值与右值的依据。
比如:
<?php
$i = 0;
$a = ++$i;
echo $a;
值是
1
<?php
$i = 0;
$a = $i++;
echo $a;
值是
0
分析:
$a = ++$i;
等价于
$a = $i + 1;
$a = $i++;
等价于
$a = $i;
$i = $i + 1;
总结:
$i = $a = 1;
$a += ++$i;
echo $a;
是先自身加1,后赋值给新变量,参与运算。
$i = $a = 1;
$a += $i++;
echo $a;
是先赋值给新变量,后是自身加1,不参与运算。