29
10

一道php自增运算符题

Author Jessica     Category PHP     Tags

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

1
2
$i = 1;
echo "i=".(++$i)+(++$i)+(++$i);

大家可以去运行一下 结果会是7!

这让我们很纳闷 为什么是7呢? 无论如何都出不来7啊..

下面我们改一下这道题目

1
2
$i = 1;
echo (++$i)+(++$i)+(++$i);

这时候在让你回答.我觉得你是可以回答出正确答案的.

没错. 这个答案是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点.

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

10 Comments to “ 一道php自增运算符题 ”

  • 大宝 2010年03月29日 于 17:20

    受益匪浅啊。。谢啦

    • 匿名 2010年03月29日 于 18:05

      看了解释才明白是怎么回事!

  • 蜗牛 2010年03月30日 于 22:13

    明白了

  • konakona 2010年03月31日 于 13:03

    汗= =那你咋不在群里跟我们一起讨论。。。
    俺桑心勒。。。

  • konakona 2010年03月31日 于 13:05

    倒,按错了。。直接提交勒。。

    那位童鞋就是木有注意到PHP是一个会自动转换数据类型的语言。。。
    忽略了这一点才会理解不了。。。
    早知道他发了帖问的,我就去搞点KYB了=。=######

    http://bbs.phpchina.com/thread-178173-1-1.html

    这个问题看你会不会解决,哈哈。

  • lei 2010年03月31日 于 18:15

    强人。。

    解释的很有说服力。

  • 54chen 2010年03月31日 于 20:05

    纯踩一脚
    这道题是浩强叔叔C语言里的必做题

  • 匿名 2010年04月2日 于 19:25

    我也弄错了,刚开始还以为是9呢。。。。

  • 匿名 2010年04月28日 于 15:55

    围观 很好

  • 匿名 2010年05月9日 于 18:35

    学习了,感谢

Post comment

分类目录

最近文章

近期评论

文章归档

标签

.net AJAX button Comet CSS Discuz! DIV+CSS Flash Form Google HTML编辑器 IE8 Java JavaScript jQuery JSP md5 MySQLReback OAuth Oracle PHP php-fpm PNG Punny SkiyoTabs tab TagCloud Vista Web2.0 Windows7 上传 加密 图标 本站原创 模板 模板引擎 源码 登录 短网址 石家庄 算法 编译 面向对象 魔术方法

链接表