A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 为热爱挥汗 中级黑马   /  2017-11-24 09:05  /  1345 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

大家对于 ++$i 的理解基本是正确的,但是对 $i++ 的理解却有些偏差,尤其是当他作为一个表达式给别人赋值的时候。举例说明一下:

$i=0;
$j=$i++;
echo $j;
echo $i;
此时结果是$j为0,$i为1;到这里大家都没有问题。
但是,遇到下面的语句就犯了糊涂:
$i=0;
$i=$i++;
echo $i;
此时大部分的人都认为是1;但是结果却是0.  为什么呢?真实的$i=$i++的执行过程如下:
首先是$i++:
$temp=$i;
$i=$i+1;//此时$i变成了 1;
这两步完成以后,才是赋值操作:
$i = $temp;//赋值的时候,他是将事先保存到临时变量中的值再拿出来赋给别的变量,而这个变量现在恰好是他自己,而在赋值之前,$i 已经变成了 1,赋值之后,$i 又变成 0 ;
此时执行echo,输出结果自然就是 0 ;
其实js中,也是这个结果。



   

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马