TaoGOGO的技术博客,始于2007年,通过文字分享技术、记录生活

PHP变量写时复制导致的计算错误问题

$a = 1;$b=&$a;echo (++$b)+(++$b);输出结果你猜是什么?可能有些人以为是5,比如我…但是实际结果是6,why?其实这是个写时复制导致的问题。先看这段代码:$a = 1;$b=$a;echo (++$b)+(++$b);左侧++$b计算结束,$左值=$b;继续计算右边的++$b,在修改$b时,因为$b发生改变,与$左值不同,左值会复制一份,$左值=2,$b改变后,$b=3,所以$左值+$右值=5。而上面的代码,左侧++$b计算结束,$左值=$b;与上面相同。继续计算右边的++$b,在修改$b时,因为$左值是引用,所以并未复制出新变量。$左值=$b,所以相加后是6引用计数相关的资料可以在这里找到:http://www.php.net/manual/en/function.deb
发布时间:2010-07-19 | 类别: | 阅读:115355 | 评论:0 | 标签:php 写时复制

公告

҉百度内部推荐,高级研发/PM(需2年以上工作经验)。
有意者微博私信联系~

微博言语

文章分类