代码改变世界

php:一个题目,关于优先级,及$a++和$a=$a+1,

2014-01-07 19:21  xbread  阅读(839)  评论(0编辑  收藏  举报

这几天常看到微博上转发的一条微博:就做了下,竟做错了,所以就试着分析了下~~

这是微博:

这是代码:

 1 <?php
 2 $c = 3;
 3 $b = 6;
 4 if ($c = 4 || $b = 4) {
 5     $c++;
 6     $b++;
 7 }
 8 echo $c . $b;
 9 echo "<hr />";
10 /**
11   答案为17
12   这边赋值运算符优先级低于||,所以可以理解为if($c= (4 || $b=4)){}
13  */
14 $c = 3;
15 $b = 6;
16 if ($c = 4 or $b = 4) {
17     $c++;
18     $b++;
19 }
20 echo $c . $b; 
21 echo "<hr />";
22 /**
23   答案为57
24   这边赋值运算符优先级高于or,所以可以理解为if(($c= 4) ||($b=4)){}
25  */
26 $a = true;
27 echo $a++;
28 echo "<hr />";
29 /**
30   答案为1
31   这边还不懂为何$a++,和$a=$a+1 两种表达为何输出答案不同
32  */
33 $a = true;
34 echo $a = $a + 1;
35 /**
36   答案为2
37   这边还不懂为何$a++,和$a=$a+1 两种表达为何输出答案不同
38  */
39 ?> 

总结:1:能用括号尽量用,除非能保证语法不会出错,优先级 && 大于  || 大于 = 大于 and 大于 or

   2:用||时,如果第一个条件成立,剩下的条件的不用执行,用&&时第一个错误,剩下的条件不用执行

   3:$a=true 时,执行$a++时还是1,这个在条件判断时比较会碰到,必须要注意