banli
V2EX  ›  问与答

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

  •  
  •   banli · Jun 5, 2017 · 4141 views
    This topic created in 3439 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
    johnlui
    Jun 5, 2017
    1
    送分题,当然不等价。。。。。
    U7Q5tLAex2FI0o0g
    U7Q5tLAex2FI0o0g
    Jun 5, 2017
    2
    明显不一样。
    johnlui
    johnlui
    Jun 5, 2017
    3
    三者相同的时候就不等价了
    forgcode
    forgcode
    Jun 5, 2017
    4
    不等!
    U7Q5tLAex2FI0o0g
    U7Q5tLAex2FI0o0g
    Jun 5, 2017
    5
    另外这跟 PHP 没关系,任何一种语言都适用。
    楼主你学过计算机的基础吗
    levin007
    levin007
    Jun 5, 2017
    6
    不等价,A,B,C 都为 true 时,第一个 status 为 a,第二个为 b
    feiyuanqiu
    feiyuanqiu
    Jun 5, 2017
    7
    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
    kkhaike
    Jun 5, 2017
    8
    应该是 (!A || !B || !C) ? b : a;
    U7Q5tLAex2FI0o0g
    U7Q5tLAex2FI0o0g
    Jun 5, 2017❤️1
    9
    解释太多了你们。
    简单的就是
    A && B == !A || !B
    banli
    banli
    OP
    Jun 5, 2017
    10
    出题失误, 写错了 。 第二个表达是 (!A || !B || !C) ? b : a; 对不住啦。
    mrgeneral
    mrgeneral
    Jun 5, 2017
    11
    高中数学吧,取反的时候符号和本身都得反啊。

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

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

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

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

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