你不假思索第一反应回答: "Either A or B" 翻译成开发中的逻辑关系是?

2017-01-26 18:27:57 +08:00
 KentY

今天被同事问到,然后,我答错了... :-( 被告知答案后..服气.

8873 次点击
所在节点    程序员
57 条回复
dongdongkun
2017-01-26 18:30:04 +08:00
if A
else B
cxbig
2017-01-26 18:30:54 +08:00
A || B
KentY
2017-01-26 18:31:43 +08:00
@dongdongkun 您这不是逻辑关系, 问题是需要个 logical operation
KentY
2017-01-26 18:31:59 +08:00
@cxbig 跟我回答的一样....
codecrash
2017-01-26 18:34:04 +08:00
(A&&!B)∥(!A&&B)
justyy
2017-01-26 18:35:07 +08:00
A | B

英文中 Either 的意思是 两者其中只要有一个满足就可以。
所以可以存在的情况是, A 为真, B 为真, 或者 A 和 B 都为真。

上面写的 if 肯定是不对的,
|| 有可能因为编译器 的 boolean 短路, 所以也不完全对。
ynyounuo
2017-01-26 18:36:10 +08:00
20015jjw
2017-01-26 18:38:56 +08:00
就是 A or B 啊... AB 中至少对一个就对
不仅我们 CS 是这么教的,我们哲学里的逻辑也是这么教的。
20015jjw
2017-01-26 18:43:00 +08:00
@justyy 短路为什么不对... 不还是对的么... A 对 a || b 就肯定是对的了呀
langjiyuan
2017-01-26 18:43:22 +08:00
a 或 b a | b 但是楼主答案是什么呢?强迫症要命啊
chairuosen
2017-01-26 18:43:26 +08:00
不是或么?或就是||啊
linbiaye
2017-01-26 19:10:07 +08:00
if ((a && !b) || (!a && b))
justyy
2017-01-26 19:12:54 +08:00
@20015jjw
A || B ==> 编译器 先检查 A , 如果为真, 就不会管 B 的值了(假设 B 有可能在真和假之间)
A | B ==> 涵盖 A 为真 , B 为真 或者 A 和 B 都为真。。
好吧。。明白你的意思,是我有点较真了。
KentY
2017-01-26 19:15:05 +08:00
@ynyounuo 答的对, 应该是 XOR ,

"either a or b" 意思是: A B 之中有且仅有一个是真.
KentY
2017-01-26 19:16:56 +08:00
刚忘记了引用一下:

either-or
adjective [ before noun ] UK ​ /ˌaɪ.ðərˈɔːr/ /ˌiː.ðərˈɔːr/ US ​ /ˌiː.ðɚˈɔːr/ /ˌaɪ.ðɚˈɔːr/

used to refer to a situation in which there is a choice between two different plans of action, but both together are not possible:
It's an either-or situation - we can buy a new car this year or we can go on holiday, but we can't do both.
laoyur
2017-01-26 19:17:29 +08:00
rand() % 2 == 0 ? A : B
justyy
2017-01-26 19:17:51 +08:00
@KentY 多谢, 原来我一直理解的是错的.
IgniteWhite
2017-01-26 19:30:47 +08:00
异或。。。你得港清楚这是逻辑运算还是。。。
ho121
2017-01-26 19:37:06 +08:00
either A or B 使用的语境一般是在 A 和 B 有且只有其中一个为真(而且不会有 A 和 B 之外的可能)的情况下,比如说:

A red-black tree is a binary search tree with one extra bit of storage per node: its
color, which can be either RED or BLACK.

要储存一个节点的红黑属性,只需要一个 Boolean 变量就足够了,非黑即红。

但是这似乎没法直接翻译成一个逻辑表达式。
21grams
2017-01-26 19:49:29 +08:00
其实就是异或, A^B

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

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

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

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

© 2021 V2EX