zoukankan      html  css  js  c++  java
  • php中的或运算

    1.今天碰到一个php或运算的面试题,很有趣,和大家分享一下。开始不明白什么原因。

    <?php
        $a = 0;
        $b = 0;
        if($a=3)>0 || ($b=3)>0)
        {
            $a++;
            $b++;
        } 
        echo $a;  // 4
        echo $b;  //1
    if(($a=3)>0 | ($b=3)>0)
    {
        $a++;
        $b++;
    }
        echo $a;  // 4
        echo $b;  // 4

    解释:

    第一个if判断:这是布尔短路运算,|| 运算的第一个表达式满足的时候,不再计算表达式二,因此$b=3的赋值没有执行。象if(x || y)这种判断,如果前一个条件x为true的话,那就不会继续执行后面的判断了,所以上面的代码中if那里$b=3是没有执行的,b还是0,所以++后还是1

    | : 会检查每一个 条件的真伪,再做“或”运算 (光棍的不怕死)
    ||: 按照条件写的顺序,直到一个为true时,后面的条件则不再检查,直接进入条件
    & : 会检查每一个 条件的真伪,再做“与”运算  (光棍的不怕死)
    &&: 按照条件写的顺序,直到一个为false时,后面的条件则不再检查,直接跳出
    &是位运算符,表示按位与运算。&&是逻辑运算符,会短路。

  • 相关阅读:
    CentOS 网络配置
    BUUCTF-PWN爬坑-04-pwn1_sctf_2016
    BUUCTF-PWN爬坑-03-warmup_csaw_2016
    BUUCTF-PWN爬坑-02-rip
    此博客早八百年已停止维护
    重&长剖
    FHQ Treap
    NOIP2020游记
    CSP2020 游记
    线段树套平衡树
  • 原文地址:https://www.cnblogs.com/yangzailu/p/7866061.html
Copyright © 2011-2022 走看看