【问题标题】:AND OR OperatorAND OR 运算符
【发布时间】:2014-09-04 04:29:12
【问题描述】:

简单地说,AND OR 概念是否有 and 运算符?

例如:if (a = true AND OR b = true)

如果不是操作员,可以通过什么流程来做到这一点?

【问题讨论】:

  • C++ 不是英语。你能用实际的 C++ 代码解释一下吗?
  • 在 C++ 中(就像在大多数编程语言中一样),逻辑 or 是一个包含或,所以如果它的左操作数为真,或者它的右操作数为真,或者如果两者都为真,则结果为真是真的。
  • @PaulMcKenzie if (a = true && || b = true) 是的,我知道这是一种不好的写法,但它是用来提问的。如果这样的行动是可能的问题。
  • && || 一起不起作用。你想要什么&&||?您可以使用 if(condition1 && condition2)if(condition1 || condition2)
  • @Jayesh 我想要两个。这就是为什么我按照我的方式写这个问题。 “你可以有一个 AND OR b。”

标签: c++ c operators


【解决方案1】:

英文概念and/or 已经在基于C 的语言中表示为||,即inclusive

我的意思是,如果a 为真,或者b 为真或两者 都为真,则a || b 为真。

“或”的“你是男孩还是女孩”的意思(“你是男孩”或“你是女孩”,但不是两者兼而有之)是exclusive,并不能真正满足原始运算符。

要实现您可以使用如下表达式:

a != b

假设它们是由布尔运算生成的值,而不是任意整数(C 也允许)。

要像 C 一样处理 任意 整数,请使用:

!!a != !!b

双重布尔否定将强制它们在比较之前成为“正确的”布尔值。


如果您想更深入地研究不同的位运算符,请参阅this answer,或参考下表,其中F 表示假(或零),T 表示真(或一) :

AND | F T     OR | F T     XOR | F T    NOT | F T
----+-----    ---+----     ----+----    ----+----
 F  | F F      F | F T       F | F T        | T F
 T  | F T      T | T T       T | T F

【讨论】:

  • 谢谢!这是我知道的菜鸟问题,并且无法在谷歌中找到我的答案,因为您解释它的方式与我一直在阅读的不同。所以谢谢你对我的包容。我很感激。
  • 没问题,@Laina,SO 适用于 所有 级别的程序员,而众所周知,Google 不适合查找带有大量标点符号的术语。 Perl 之类的东西(似乎是 all 标点符号)绝对是一场噩梦 :-)
【解决方案2】:

在包括 C 和 C++ 在内的大多数编程语言中,逻辑 OR (||) 的含义来自数学,因此具有包容性:A 或 B 为真,或两者都为真。

  • 真或真 =
  • 真或假 = 真
  • 假或真 = 真
  • 假或假=假

在英语中,我们说“和/或”是因为“或”通常是互斥的,类似于逻辑异或:A 或 B 为真,但不能同时为真。

  • 真异或真 =
  • 真异或假=真
  • 假异或真 = 真
  • 假异或假=假

大多数语言都缺少逻辑 XOR 运算符,因为它相当于布尔值的不等于 (!=)。

bool xor(bool a, bool b) {
  return a != b;
}

【讨论】:

    【解决方案3】:

    您的意思是 XOR(异或)吗?

    XOR 运算符的简短答案是:^

    但从表面上看,我认为您可能需要更强大的变量比较基础,您可能想熟悉这一点:http://www.cplusplus.com/doc/tutorial/operators/

    【讨论】:

      【解决方案4】:

      说如果 A 为真 AND OR B 为真不是正确的编程表达式,也不是布尔代数中的正确表达式。你不能在声明中出现这样的结合和分离。您不能在维恩图或逻辑门中表示该语句,并且您应该能够使用任何有效的布尔表达式来完成这两者。要查看此内容,请尝试将您的问题写在真值表中。

      【讨论】:

      • 这确实解释了很多。我可能一直带着错误的心态去参加我的计划。如果在编程之前没有将它们真正写出来,我将从真值表方法开始我的工作。乏味,但它会有所帮助。谢谢。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-02-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-26
      • 2014-09-08
      • 2020-12-17
      相关资源
      最近更新 更多