标签:div 问题 代码 amp php 简单 c 不能 没有
下面代码输出什么?
<?php $a = 3; $b = 5; if($a = 5 || $b = 7){ $a++; $b++; } echo $a.$b; ?>
怎么说呢,这是一道比较坑的题目,应该用等于,用了赋值,这个是很容易就会被发现,然后至少我是直接去下步运算,先++,再输出,结果为68.
问题当然不能这么简单了,这个答案是错的,正确的答案是A,16.||的优先级要高于=,所以先判断5||,此时就会返回真并且赋值给$a,再去++,当然这里还有个陷阱,那就是对true的自增的问题,想当然的认为应该将true换成1,然后自增,当然这是不对的.
这道题到这里也就结束了,但是我还有个问题就是,如果代码修改如下:
<?php $a = 3; $b = 5; if($a = 0 || $b = 7){ $a++; $b++; } echo $a.$b; ?>
那么,当0||判断为假,即去判断右边的语句,这时候$b的值是为5的,然后后面还有个赋值运算,按照||的优先级高于赋值运算,那应该会直接判断$b的值是不是为真,但是实际的运算是先进行赋值,然后再进行||的判断,这个我就不是很理解了,有没有大神可以给解释解释?
标签:div 问题 代码 amp php 简单 c 不能 没有
原文地址:http://www.cnblogs.com/oniceriver/p/4040043.html