一道php自增运算符题

来源:互联网 发布:java获取当前时间毫秒 编辑:程序博客网 时间:2024/05/22 00:42

刚才在论坛看到的..题目是这样的:

大家可以去运行一下 结果会是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点.

.“与”+“的优先级的问题
字符串强制转换成数字的问题