zoukankan      html  css  js  c++  java
  • 为什么 echo 3 . print(2) . print(4) . 5 . 'c'的结果是45c2131

    例子:请写出echo 3 . print(2) . print(4) . 5 . 'c'的输出结果为____?
    许多人看到这个题的第一印象是输出结果不就是3245c嘛,然而正确的是答案却是45c2131,是不是感觉不可思议?
    想要分析原因首先我们需要明确以下几点:

    • PHP中的.连接符是从右向左执行的;
    • echo和print输出都是需要占用io的;
    • print函数有返回值且始终返回1。
    • print函数在打印输出时,会清空io存储

    然后我们再来分析上面的的语句的执行过程

    echo 3 . print(2) . print(4) . 5 . 'c';
    

    程序从右至左执行,
    第一步:
    最初在io存储处存入 字符串 c,接着遇到5,存入io,此时io内容为5c, echo 在碰到print()时候将执行print(),即在把 5 放入io存储后由print(4)将数字4也同样压入io存储中,此时io存储中数据为45c,由于print()为输出函数(官方介绍print实际是语言结构,不是函数),所以此时会执行一次io输出操作,即输出 45c 到输出界面,清除io存储,io存储内此时数据为'',print()执行完成后返回1,此时界面上已经有了45c,而代码则变成了

    echo 3.print(2).1;
    

    第二步:
    同上以此类推,这次会先将1放入io内,接着讲2放入io内,此时io内的内容为21,print执行输出操作,清空io,此时屏幕相等于已经输了了45c21,代码则变为了

    echo 3.1;
    

    第三步:
    将1和3放入io,此时io内容为31,echo 将io内容输出到屏幕,此时最终结果为45c2131

    同类例题:
    echo 3 . print(2) . print(4) . 5 . 'c' . print(6) . print(7) . 'b' . print(8) . 'a';的结果是什么呢?
    结果是:8a7b16145c12131
    有兴趣的可以看看自己的推算出的结果是否是正确的。

    参考:https://blog.csdn.net/inite/article/details/74130350

  • 相关阅读:
    Visual Studio日志
    选择jQuery的理由
    第三方开发者可将JIT和编译器引入WinRT吗?
    Visual Studio 2012和.NET 4.5已经就绪!
    500TB——Facebook每天收集的数据量
    Netflix开源他们的另一个架构——Eureka
    PhoneGap 2.0 发布
    快速哈希算法破坏了加密的安全性
    Blend for Visual Studio 2012:为Windows 8应用所用的UX工具
    系统中的故障场景建模
  • 原文地址:https://www.cnblogs.com/itbsl/p/9903923.html
Copyright © 2011-2022 走看看