关于 ++和&一点疑惑
本帖最后由 yinjie_1984 于 2014-11-15 08:22:22 编辑 $a=1;
$b=&$a;
$b=$a++;
//求$a、$b
第二句话的意思是b也指向了a的地址;
第三句话的意思是在使用后a的值加1,所以$b=1;
关键是后面我不了解了$a++,不表示使用后加1,所以现在$a=2;
可是$b的地址和a的地址一样岂不是$b也等于2?还是第三句话后面的$a++根本就是没执行?这道题答案是$a,$b都是1;
比如和这个比较
$a=1;
$b=$a++;
?>
这个不就是$b=1,$a=2
有点晕啊。。。
------解决思路----------------------$a = 1;<br />$b = $a++;<br />var_dump($a, $b);<br />/*<br />int(2)<br />int(1)<br />*/<br /><br />$a = 1;<br />$b = &$a;<br />$a++;<br />var_dump($a, $b);<br />/*<br />int(2)<br />int(2)<br />*/<br /><br />$a = 1;<br />$b = &$a;<br />$b = $a++;<br />var_dump($a, $b);<br />/*<br />int(1)<br />int(1)<br />*/<br />
Copier après la connexion
对于 $b = $a++;
将 $a 的值 1 取出赋予 $b,但 ++ 的优先级高于 =,所以取值后先不做赋值,而是做 ++,于是 $a 的值为 2(由于 $b 是 $a 的引用,所以此刻 $b 的值也是 2)
然后做赋值操作,$b 的值就等于 1 了
因为 $b 是 $a 的引用,于是 $a 又被改回了 1