首先我出两题,
① $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!!! 记住这句话 随便你的 ++与--怎么变化 绝对不会算错,除非你的算术能力实在是……另我无语!(当然我只测了 加法与减法运算) 也不知道说的对不,要是说错了还请各个把我从这个泥潭拉出来吧!!!
正确的说应该是:表达式在运算前,会先判断,如果发现第一个数没有++或--,而第二个数有,就会优先运算第二个数,再去运算其他的数,如果第二个数也没有++或--,不管后面的数的++或--怎么变化,有多少个也不会再去管后面的而开始进入正常运算,从第一个数开始。这样就完美了!!!呵呵
原文地址: http://bbs.lampbrother.net/read-htm-tid-152780.html
阅读(13) | 评论(0) | 转发(0) |
<script type=text/javascript charset=utf-8 src="http://static.bshare.cn/b/buttonLite.js#style=-1&uuid=&pophcol=3&lang=zh"></script> <script type=text/javascript charset=utf-8 src="http://static.bshare.cn/b/bshareC0.js"></script>
① $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!!! 记住这句话 随便你的 ++与--怎么变化 绝对不会算错,除非你的算术能力实在是……另我无语!(当然我只测了 加法与减法运算) 也不知道说的对不,要是说错了还请各个把我从这个泥潭拉出来吧!!!
正确的说应该是:表达式在运算前,会先判断,如果发现第一个数没有++或--,而第二个数有,就会优先运算第二个数,再去运算其他的数,如果第二个数也没有++或--,不管后面的数的++或--怎么变化,有多少个也不会再去管后面的而开始进入正常运算,从第一个数开始。这样就完美了!!!呵呵
原文地址: http://bbs.lampbrother.net/read-htm-tid-152780.html
相关热门文章
给主人留下些什么吧!~~
评论热议