首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OR和AND的区别?

OR和AND的区别?
EN

Stack Overflow用户
提问于 2012-03-02 13:56:16
回答 2查看 150关注 0票数 1

我正在为WQL查询创建一个表达式,以便将软件部署定位到既没有Version1也没有Version2的机器上。

我想出了两个表达式,它们似乎都有相同的结果,并且想要运行这个逻辑来对抗您,看看这些表达式是否真的是等价的?如果是这样的话,我可能会选择表达式1。

表达式1:

如果机器在“Software.version1”中,而机器不是Software.version1,机器不是Software.version2,则将Software.version1部署到机器

表达式2:

如果机器在"Group1“中,并且(机器不是Software.version1或机器不是Software.version2 ),则将Software.version1部署到机器上

我的大脑开始受伤了。

非常感谢

EN

回答 2

Stack Overflow用户

发布于 2012-03-02 14:03:39

在表达式1中,所有三个条件都必须为true (机器在第1组,而不是版本1,而不是版本2)。在表达式2中,两个条件必须为真:要么机器在组1而不是版本1,要么机器是组1而不是版本2。

假设机器不能同时拥有版本1和版本2,如果机器位于第1组,则第二个表达式将始终为真。第一个表达式只有在机器处于第1组且既没有版本1也没有版本2时才是真表达式。

从逻辑上讲,您有:

代码语言:javascript
复制
exp1 = g1 ∧ ~v1 ∧ ~v2

exp2 = g1 ∧ (~v1 ∨ ~v2)
     = g1 ∧ ~(v1 ∧ v2)   // by DeMorgan's theorem

所以答案是no,这两个表达式不是等价的。如果你不明白为什么,就为这三个条件和这两个表达式写出真值表。

票数 2
EN

Stack Overflow用户

发布于 2012-03-02 14:23:21

我不太熟悉语言,但逻辑似乎很直接。

如果我正确理解了这个问题,你想:

  • (1,1) -> 1(非版本1或2)
  • (1,0) -> 0 (is version 2)
  • (0,1) -> 0( version 1)
  • (0,0) -> 0(即版本1和2)

这将通过表达式1来实现。

表达式2将返回:

  • (1,1) -> 1
  • (1,0) -> 1
  • (0,1) -> 1
  • (0,0) -> 0

F 219

我强烈建议你用任何语言来测试(我肯定有某种打印的bool功能),而且因为它没有什么可测试的,所以,真的,只需要测试所有的三个或四个可能性,看看它是否返回您想要的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9534472

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档