zoukankan      html  css  js  c++  java
  • 由逻辑异或运算符而发现的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的运算符优先级是比 = 低的,在这种情况下,加个小括号就好了……

  • 相关阅读:
    11.29
    11.28
    11.24
    11.21
    11.17
    11.15
    11.14
    11.9
    11.5
    11.3
  • 原文地址:https://www.cnblogs.com/Genesis2018/p/9079807.html
Copyright © 2011-2022 走看看