PHP头条
热点:

php中$i+$i++类似问题,php


php中$i+$i++类似问题     问题一:  $i=1;                         $i+$i++  式子的值?                                              等于3嘛? 不对。                       那等于4嘛? 还是不对。                       那等于什么呢?  
     解析:由于++的优先级大于+所以先执行++,但是$i++ 是先给值后执行自加操作。也就是说式子变成了                    $i+1  同时$i被执行++操作,所以此时$i=2,式子$i+$i++ 变为:2+1。所以式子$i+$i++ 的值为3                   要是还没有明白的话,可以这样理解:                   $i=1;                   $a=$i++;                   $i+$a  // 2+1=3               我相信要是继续认真思考,还是会感到困惑的。那我们就继续往下讨论。         问题二: $i=1;                    $i+$i+$i++  式子的值?                         等于 2+2+1=5嘛? 不对,怎么可能呢?不是按照上面解析来推的啊?                    那等于什么呢?       解析:首先我们必须明白一件事情,就是优先级只对局部有效什么叫做局部有效呢?比如:$a+$b+$c*$d                  虽然在该式子中*乘法优先级最高,但是并不影响$a+$b按照从左到右的顺序先执行加法。                  同样的虽然在式子 $i+$i+$i++ 中++优先级最高但是最前面的两个$i可以先执行加法,所以式子就变成了                  2+$i++ 很显然等于3 。       问题三:$i=1;                   (++$i)+(++$i)+(++$i)+(++$i)+(++$i) 式子的值呢?
                  等于6+6+6+6+6=30嘛? 不对                   那等于什么呢?       解析:++$i  是先执行先加后赋值,但是有多个加运算,所以从左到右一步步运行的过程应该是这样的,如下:                  2+(++$i)+(++$i)+(++$i)+(++$i) =>$i=2                  2+3+(++$i)+(++$i)+(++$i) =>$i=3
                 5+4+(++$i)+(++$i) => $i=4
                 9+5+(++$i) => $i=5
                 14+6 =>$i=6
                 20
                 所以式子(++$i)+(++$i)+(++$i)+(++$i)+(++$i)的值为20         问题四:$i=1;
                 $q=&$i;
                  (++$i)+(++$i)+(++$i)+(++$i)+(++$i) 式子的值呢?                                                     等于2+3+4+5+6=20嘛? 不对,是按照问题三的解析推出来的啊?                   那等于什么呢?      解析:++$i  是先执行先加后赋值,但是问题四与问题三不同在于$i变量引用赋给了$q,也就是说由于$i变量被引用了,所以$i由数字型变成了引用型。其每步运算如下:                  $i+(++$i)+(++$i)+(++$i)+(++$i) =>$i=2                  $i+$i+(++$i)+(++$i)+(++$i) =>$i=3
                 6+4+(++$i)+(++$i) => $i=4
                 10+5+(++$i) => $i=5
                 15+6 =>$i=6
                 21
                 所以式子(++$i)+(++$i)+(++$i)+(++$i)+(++$i)的值为21
   问题五:$i=1;                   ($i++)+($i++)+($i++)+($i++)+($i++) 式子的值?                                       直接告诉你  等于15                    那如果是这样呢?                     $i=1;                     $q=&$i;
                    ($i++)+($i++)+($i++)+($i++)+($i++) 式子的值?                     直接告诉你  还是等于15                    很奇怪吧!        解析:个人推论: $i++ 和 ++$i 是有区别的,特别是在是数值型还是引用型。                                     1.对于后自加$i++而言:                                             (1) 无论$i是数值型还是引用型,都是提出$i的值,然后对$i进行加1。                                     2.对于先自加++$i而言,                                             (1) $i是数值型时,先$i进行加1然后提出$i的值。                                             (2) $i是引用型时,先将$i进行加1然后返回$i变量。                    例子一:                       $i=1;
                      echo (++$i)+$i++; // 输出 2+2=4                                       例子二:                        $i=1;
                      $q=&$i;
                      echo (++$i)+$i++; // 输出 3+2=5              注意,本解析只是博主个人的理解和总结,根本的原因,应该去看php运算的汇编代码,看它是怎么的一个计算过程,才能从根本上解释这个问题。

www.phpzy.comtrue/php/22228.htmlTechArticlephp中$i+$i++类似问题,php php中$i+$i++类似问题     问题一:  $i=1;                         $i+$i++  式子的值?                                              等于3嘛? 不对。  ...

相关文章

    暂无相关文章

PHP之友评论

今天推荐