• 为什么 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


    作者:itbsl
    链接:https://www.jianshu.com/p/63f3d0632582
    来源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • 相关阅读:
    克如斯卡尔 P1546
    真正的spfa
    第四课 最小生成树 要点
    关于vscode中nullptr未定义
    cmake学习笔记
    python学习笔记
    (BFS 图的遍历) 2906. kotori和迷宫
    (图论基础题) leetcode 997. Find the Town Judge
    (BFS DFS 并查集) leetcode 547. Friend Circles
    (BFS DFS 图的遍历) leetcode 841. Keys and Rooms
  • 原文地址:https://www.cnblogs.com/zhangzhijian/p/14606652.html
Copyright © 2020-2023  润新知