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


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

  • 相关阅读:
    RDMA技术详解(二):RDMA Send Receive操作
    RDMA技术详解(一):RDMA概述
    Fedora中制作UEFI/BIOS启动的U盘安装盘
    Fedora中制作BIOS启动的U盘安装盘
    chkdsk /f
    单片机原理及应用---实验计划
    LeetCode 645. Set Mismatch(错误的集合)
    LeetCode 401. Binary Watch(二进制手表)
    LeetCode 852. Peak Index in a Mountain Array(山脉数组的峰顶索引)
    LeetCode 518. Coin Change 2(零钱兑换 II)
  • 原文地址:https://www.cnblogs.com/zhangzhijian/p/14606652.html
Copyright © 2011-2022 走看看