banli
V2EX  ›  问与答

直觉告诉我这个逻辑有猫腻, 可是我还是找不出来, 可能是我想多了。 ( PHP )。

  •  
  •   banli · Jun 5, 2017 · 3705 views
    This topic created in 3265 days ago, the information mentioned may be changed or developed.

    请告诉我,下面的两个表达式是否等价。 有三个条件 A, B, C 和两个 状态 a, b。

    status = ( A && B && C ) ? a : b;

    status = (A || B || C) ? b : a;

    24 replies    2017-06-10 10:19:03 +08:00
    johnlui
        1
    johnlui  
       Jun 5, 2017
    送分题,当然不等价。。。。。
    U7Q5tLAex2FI0o0g
        2
    U7Q5tLAex2FI0o0g  
       Jun 5, 2017
    明显不一样。
    johnlui
        3
    johnlui  
       Jun 5, 2017
    三者相同的时候就不等价了
    forgcode
        4
    forgcode  
       Jun 5, 2017
    不等!
    U7Q5tLAex2FI0o0g
        5
    U7Q5tLAex2FI0o0g  
       Jun 5, 2017
    另外这跟 PHP 没关系,任何一种语言都适用。
    楼主你学过计算机的基础吗
    levin007
        6
    levin007  
       Jun 5, 2017
    不等价,A,B,C 都为 true 时,第一个 status 为 a,第二个为 b
    feiyuanqiu
        7
    feiyuanqiu  
       Jun 5, 2017
    status1 = ( A && B && C ) ? a : b;
    status2 = (A || B || C) ? b : a;

    当 A、B、C 都为假时,status1 = b, status2 = a
    当 A、B、C 都为真时,status1 = a, status2 = b
    kkhaike
        8
    kkhaike  
       Jun 5, 2017
    应该是 (!A || !B || !C) ? b : a;
    U7Q5tLAex2FI0o0g
        9
    U7Q5tLAex2FI0o0g  
       Jun 5, 2017   ❤️ 1
    解释太多了你们。
    简单的就是
    A && B == !A || !B
    banli
        10
    banli  
    OP
       Jun 5, 2017
    出题失误, 写错了 。 第二个表达是 (!A || !B || !C) ? b : a; 对不住啦。
    mrgeneral
        11
    mrgeneral  
       Jun 5, 2017
    高中数学吧,取反的时候符号和本身都得反啊。

    如果是按照#10 修正的话,那就没区别了。
    bukip
        12
    bukip  
       Jun 5, 2017
    数字逻辑再读一遍
    U7Q5tLAex2FI0o0g
        13
    U7Q5tLAex2FI0o0g  
       Jun 5, 2017
    @banli #10 A && B == !A || !B 这种已经是书里教过的“定理”之类的定论了吧,为什么要怀疑有猫腻?
    jiangzhuo
        14
    jiangzhuo  
       Jun 5, 2017
    我们管这门课叫离散数学??
    grayon
        15
    grayon  
       Jun 5, 2017
    status

    = ( A && B && C ) ? a : b;

    = !( A && B && C )? b : a;

    = ( !A || !B || !C ) ? b : a;
    banli
        16
    banli  
    OP
       Jun 5, 2017
    哦哦。 明白了。 效率就是快
    U7Q5tLAex2FI0o0g
        17
    U7Q5tLAex2FI0o0g  
       Jun 5, 2017
    bravecarrot
        18
    bravecarrot  
       Jun 5, 2017 via iPhone
    肯定不会等价
    建议 lz 遇到这种不清楚逻辑的画个真值表
    geelaw
        19
    geelaw  
       Jun 5, 2017
    @littleylv 错,是

    A && B == !(!A || !B)
    ryd994
        20
    ryd994  
       Jun 5, 2017
    @geelaw
    @littleylv
    正规叫法是 De Morgan's law
    vingz
        21
    vingz  
       Jun 5, 2017
    不等价,特例,A\B\C 都为 true 的时候
    U7Q5tLAex2FI0o0g
        22
    U7Q5tLAex2FI0o0g  
       Jun 5, 2017
    @geelaw #19 哈哈 是的是的 尴尬了
    Sapp
        23
    Sapp  
       Jun 5, 2017
    压根没仔细看都不可能等价....
    mingyun
        24
    mingyun  
       Jun 10, 2017
    15 楼正解
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   4414 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 87ms · UTC 05:31 · PVG 13:31 · LAX 22:31 · JFK 01:31
    ♥ Do have faith in what you're doing.