刚才在论坛看到的..题目是这样的:
大家可以去运行一下 结果会是7!
这让我们很纳闷 为什么是7呢? 无论如何都出不来7啊..
下面我们改一下这道题目
这时候在让你回答.我觉得你是可以回答出正确答案的.
没错. 这个答案是9..我想这个我就不必解释了. 2+3+4 所以等于9
那么回到最上面的题.为什么会是7呢?
其实蒙蔽就蒙蔽在那么多自增运算符了. 我们可以去查一下手册运算符的优先级可以看到.
+ – .属于一个优先级 .也就是说PHP计算的时候需要从左向右计算.
所以PHP需要先计算 “i=”.(++$i) 这时候答案是会是 “i=2″ 注意这是字符串.
在PHP中”.“与”+“的区别是相当分明的.”.“就是字符串运算.”+“就是数字运算.
这时候的运算便成了”i=2″+(++$i)+(++$i)了 我们看到 运算中没有了点.所以PHP会去实行数字运算.
但是第一个是字符串.所以PHP会把”i=2″这个字符串强制转换成数字.由于这个字符串的第一个字符不是数字.所以强制转换后的记过就是0。如果这个字符串是”2i=2″.那么转换后就变成2了.
这时候0+3+4 所以就等于7了.
好了 总结下 这道题需要我们注意2点.
“.“与”+“的优先级的问题
字符串强制转换成数字的问题