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

2017-06-05 10:21:26 +08:00
 banli

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

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

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

3111 次点击
所在节点    问与答
24 条回复
johnlui
2017-06-05 10:30:10 +08:00
送分题,当然不等价。。。。。
littleylv
2017-06-05 10:31:13 +08:00
明显不一样。
johnlui
2017-06-05 10:31:21 +08:00
三者相同的时候就不等价了
forgcode
2017-06-05 10:31:46 +08:00
不等!
littleylv
2017-06-05 10:32:25 +08:00
另外这跟 PHP 没关系,任何一种语言都适用。
楼主你学过计算机的基础吗
qq8567952
2017-06-05 10:34:48 +08:00
不等价,A,B,C 都为 true 时,第一个 status 为 a,第二个为 b
feiyuanqiu
2017-06-05 10:40:12 +08:00
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
2017-06-05 10:40:45 +08:00
应该是 (!A || !B || !C) ? b : a;
littleylv
2017-06-05 10:42:05 +08:00
解释太多了你们。
简单的就是
A && B == !A || !B
banli
2017-06-05 10:44:24 +08:00
出题失误, 写错了 。 第二个表达是 (!A || !B || !C) ? b : a; 对不住啦。
mrgeneral
2017-06-05 10:46:46 +08:00
高中数学吧,取反的时候符号和本身都得反啊。

如果是按照#10 修正的话,那就没区别了。
bukip
2017-06-05 10:47:44 +08:00
数字逻辑再读一遍
littleylv
2017-06-05 10:49:01 +08:00
@banli #10 A && B == !A || !B 这种已经是书里教过的“定理”之类的定论了吧,为什么要怀疑有猫腻?
jiangzhuo
2017-06-05 10:49:17 +08:00
我们管这门课叫离散数学??
grayon
2017-06-05 10:49:44 +08:00
status

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

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

= ( !A || !B || !C ) ? b : a;
banli
2017-06-05 10:51:00 +08:00
哦哦。 明白了。 效率就是快
littleylv
2017-06-05 10:53:05 +08:00
bravecarrot
2017-06-05 13:00:13 +08:00
肯定不会等价
建议 lz 遇到这种不清楚逻辑的画个真值表
geelaw
2017-06-05 13:04:59 +08:00
@littleylv 错,是

A && B == !(!A || !B)
ryd994
2017-06-05 13:17:20 +08:00
@geelaw
@littleylv
正规叫法是 De Morgan's law

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/365989

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX