• 运算、问题++ 与 你真的弄明白了吗?不防进来看看!!!by小雨


    最近使用开发的过程中出现了一个小问题,顺便记录一下原因和方法--运算、问题-

        首先我出两题,

          ①    $a=10;

                  $b= $a + ++$a;                         echo $b;

          ②    $a=10;

                  $b= $a + $a--;                          echo $b;

         ③     $a=10;

                 $b= $a + ++$a + ++$a;              echo $b;

                                                                                             如果你的案答不是  ① 22  ②  19  ③ 34  请继承看下去

            开学了10多天了,我们讲到PHP的运算符了,上完课还有很多的学同不名白 ++ 与 --!开始我为以我真的明确了!但晚自习同桌问我一问题 ,就是

            $a=10; $b=$a++ + --$a;  echo $b;  很单简  20  ,我答回上来了,也释解给他听了,但同桌说了一句话让我开始从新思考这个问题,他说:“教师不是说从右向左算计吗?”  而我是从左向右的,为了弄明确  我开始试测,结果肯定是从左向右运算,我想是学同听错了,但我要说的不是这个单简的问题,而是,当测到这一种情况时我发明一条法则,是我之前都没想到的,估计学同们没弄懂也是因为这个要点没明确,当我把下面的三道题出给自认为弄明确了的学同答回时(我先问他弄明确没有,不是弄明确了的我不问),他懵了 。     首先 看看这道题: $a=10;  $b=$a+ --$a;    从左向右  是 $b=  10  +  (10-1)=19对吗? 错!!! 再来, 从右向左是   $b=(10-1)+9=18,  对了,但是,案答是对的方法错了,这里有人就要视鄙了,说了半天不就是优先级的问题吗,那再看看这题:

            $a= 10;        $b=$a + ++$a + ++$a  ; echo $b;               案答是  $b=(10+1)+11+(11+1)=34  ,难道说样同的两个  ++$a  只有一个的优先级高吗,这就不只是优先级的问题了,其实面里有条法则;那就是:

        当边右的运算表达式的第一个操作数(从左自右)没有++或--时  ,要将第一个有++或--的操作数放到第一个置位来,再从左向右运算,如果是有多个操作数都有++或--,不必去管他,只把第一个有

      ++或--的放到第一个置位就ok!!!      记着这句话  便随你的 ++与--怎么化变 绝对不会算错,除非你的算术能力实在是……另我无语!(当然我只测了 加法与减法运算) 也不知道说的对不,要是说错了还

        请各个把我从这个泥潭拉出来吧!!!

        准确的说应该是:表达式在运算前,会先判断,如果发明第一个数没有++或--,而第二个数有,就会优先运算第二个数,再去运算其他的数,如果第二个数也没有++或--,不管前面的数的++或--怎么化变,有多少个也不会再去管前面的而开始进入畸形运算,从第一个数开始。这样就完美了!!!呵呵

    文章结束给大家分享下程序员的一些笑话语录: 女人篇
      有的女人就是Windows虽然很优秀,但是安全隐患太大。
      有的女人就是MFC她条件很好,然而不是谁都能玩的起。
      有的女人就是C#长的很漂亮,但是家务活不行。
      有的女人就是C++,她会默默的为你做很多的事情。
      有的女人就是汇编虽然很麻烦,但是有的时候还得求它。
      有的女人就是SQL,她会为你的发展带来莫大的帮助。

  • 相关阅读:
    springMVC总结
    spring总结
    dubbo文档
    mysql集群
    JVM-优化
    JVM-GC日志打印
    JVM-垃圾回收
    JVM-问题定位示例
    C++11
    《疯狂的程序员》
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3024848.html
Copyright © 2020-2023  润新知