• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

关于 ++和&一点疑惑

php 搞代码 4年前 (2022-01-23) 16次浏览 已收录 0个评论
文章目录[隐藏]

$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;
比如和这个比较
<?php
$a=1;
$b=$a++;
?>
这个不就是$b=1,$a=2
有点晕啊。。。

回复讨论(解决方案)

$a=1;
$b=$a++;

结果:
$b = 1
$a = 2;

如果在中间加 $b = &$a;
表示$a $b 指向同一个地址
如果$b改变,$a的值也会变,最终$b = 1,$a = 1

(、本文来源gao@!dai!ma.com搞$$代^@码网*搞gaodaima代码

$a = 1;$b = $a++;var_dump($a, $b);/*int(2)int(1)*/$a = 1;$b = &$a;$a++;var_dump($a, $b);/*int(2)int(2)*/$a = 1;$b = &$a;$b = $a++;var_dump($a, $b);/*int(1)int(1)*/

对于 $b = $a++;
将 $a 的值 1 取出赋予 $b,但 ++ 的优先级高于 =,所以取值后先不做赋值,而是做 ++,于是 $a 的值为 2(由于 $b 是 $a 的引用,所以此刻 $b 的值也是 2)
然后做赋值操作,$b 的值就等于 1 了
因为 $b 是 $a 的引用,于是 $a 又被改回了 1

基础没打好~ 谢谢版主 明白了!

如果你不知道运算符的优先级 可以这样理解!

<?php$a=1;$b=&$a; //相当于告诉你 a、b指向同一地址!$c=$a++; //先把a的当前值赋给c 之后 a自加1$b=$c;

形象点说就是 a b 代表同一抽屉里有几个苹果! 小明负责看一眼a所在的抽屉 把抽屉里有几个苹果记住(即a是多少),然后往抽屉里多放一个苹果! 然后再把b所在的抽屉里的苹果数变成刚刚记住的苹果数,即a的值! 所以变来变去! 又变回a了!

第一种情况,没有引用

$a=1;$b=$a; // 这时 b=1 a=1$b=$a++; // a先赋值给b,然后再自增 b=1 a=2echo $a;echo $b;

第二种情况,引用

$a=1;$b=&$a; // b引用a,就是a,b是指向同一内存地址$b=$a++; // a 把值读出后执行自增,a=2 b=2,然后再把值赋值给b,所以b=1 a=1echo $a;echo $b;

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:关于 ++和&一点疑惑

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址