一个帖子引发的思考(引用,条件判断,优先级)

原帖地址:http://topic.csdn.net/u/20101115/21/e09e8980-6179-4937-bb32-265b89f2c4f3.html

 

 

首先楼主的问题大家可以看一楼的回答和解释,很清楚了我觉得。

if(($a=3)>0||($b=$a)>0)这里面,把3赋值了给$a。而对于"||"逻辑运算符,只要前面的成立就不往后面执行了,所以没有把$a赋值给$b。

可是二楼的提出了另外一个问题,即把条件语句if(($a=3)>0||($b=$a)>0)改为if($a=3||$b=$a)。

和原来的输出结果一样么?

结果是不一样的。

为什么不一样,其实我也不是很懂,自己测试了一下,也找了好久:

首先是优先级的问题:按理说||的优先级高于=,即if($a=3||$b=$a)等价于if($a=(3||$b)=$a),但是实际的结果是||的优先级让=抢走了。具体原因大家参照这儿:http://www.laruence.com/2010/07/26/1668.html?cp=1#comments

然后就是我试了一下,if($a=3||$b=$a)和if(($a=3)||$b=$a)的结果也不一样,而且问题就出在这儿。

于是我在条件语句中加了一条语句:var_dump($a,$b)用于输出$a和$b的类型,结果是$a为布尔型,$b为int即整形。

看到这儿大家应该明白了,$a=3加上括号之后,把3赋值给了$a,进行了运算,即整体为真。不加括号的话,即也为真,但是没有运算,只是判断真假,所以$a的值回归到原始的0。(我的理解,我继续查找啊。)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值