题目大概如下,具体数据记不清了,要求写出输出结果。
$a = 1;
$b = 2;
$c = &$b;
$c = 3;
//1
if (($c = 4) > 0 | ($b = $a) > 0)
{
$a ++;
$b ++;
$c ++;
}
printf("%d,%d,%x/n", $a, $b, $c);
做这个题要细心啊,一不留神就着道了,结果是:2,3,3。
本题的重点在引用上,在 PHP 中引用意味着用不同的名字访问同一个变量内容。如本题,一开始$b指向内存中一块存放数据的2的单元,通过$c = $$b这条语句$c也指向了这个内存单元。现在不管给$b还是$c赋其他值,都会影响内存中这块存储单元所存储的数据,导致$a和$b的值都为新赋的值。
所以在1处,$a = 1;$b = 3;$c = 3;
接着往下走,看清楚是$c = 4而不是$c == 4,这个if条件语句中又会改变$c和$b的值。
$c = 4 导致 $b = $c = 4;
$b = $a 导致 $b = $c = 1;
$a ++ 导致 $a = 1 + 1 = 2;
$b ++ 导致 $b = $c = 1 + 1 = 2;
$c ++ 导致 $b = $c = 2 + 1 = 3;
最后输出结果:2,3,3。
新浪的一道面试题
最新推荐文章于 2022-05-08 13:36:48 发布