• 由逻辑异或运算符而发现的PHP诡异运算符优先级


    PHP的逻辑运算符中,xor表示逻辑异或

    $a xor $b

    结果

    如果 $a$b 有且仅有一个为 true,则返回 true;如果都是truefalse,则返回false

    然而在测试xor运算符时,发现一点问题
    错误情况1

    <?php
            $a = false xor true;
            var_dump($a);
    ?>

    结果1

    boolean false

    情况2

    <?php
            $a = true xor false;
            var_dump($a);
    ?>

    结果2

    boolean true

    这是怎么回事呢?


    我们换个测试xor运算符的方式
    情况3

    <?php
            echo false xor true;
    ?>

    结果3

    1

    这样就没问题了,那么前两种情况是哪里有毛病呢?


    情况4

    <?php
            $a = (false xor true);
            var_dump($a)
    ?>
    

    结果4

    boolean true

    这样就对了,可见应是运算符优先级导致的。


    在PHP中,and、or、xor的运算符优先级是比 = 低的,在这种情况下,加个小括号就好了……

  • 相关阅读:
    BZOJ3439: Kpm的MC密码
    BZOJ2819: Nim
    BZOJ1901: Zju2112 Dynamic Rankings
    Bzoj3230: 相似子串
    Bzoj4504: K个串
    CF609E. Minimum spanning tree for each edge
    bzoj1832: [AHOI2008]聚会
    css 笔记1
    namespace 相关
    cmd 命令
  • 原文地址:https://www.cnblogs.com/Genesis2018/p/8304727.html
Copyright © 2020-2023  润新知