C#逻辑运算符

时间:2017-03-20 16:03:51

标签: c#

Iam在应用程序上工作,我需要根据其他两个布尔变量fa中的值获取布尔标志值b。以下是条件:

  1. 如果ab都为真,则ftrue
  2. 如果ab均为假,则ftrue
  3. 如果a为真且b为假,ftrue
  4. 如果a为false且b为真ffalse
  5. 我想知道是否有一种更简单的方法(比如单个运算符)来获取f的值,而不是我拥有的值:

    a?true:(b?false:true)
    

3 个答案:

答案 0 :(得分:8)

a ? true : cond相当于a || condb ? false : true!b相同,因此您可以使用:

bool result = a || !b;

答案 1 :(得分:2)

你在寻找的是逆向的逻辑蕴涵:

a<=b

a    1 1 0 0 
b    1 0 1 0
a<=b 1 1 0 1 

编辑:关于C#解释以及实际逻辑含义是什么,我没有对我的答案做出很好的解释:

首先,=&gt;是 if ... then 的正式符号。

  

P =&gt; Q意味着   如果P则Q.

逻辑含义相当直观,因为我们可以将大多数情况转换为自然语言。示例:

  

如果n> 3,则n + 1> 3

这显然是对的。

记住一些事情 - 引用逻辑推理:第一课程

在普通语言中,'if ... then'具有双重含义。想象一下,你说'如果下雨,那么我就不会来'。通常这也意味着'但如果不下雨,那么我会来。你确实没有说过最后一句话,但是,一点点常识可以导致最后一句的结论。

如何在此链接上使用C#中的逻辑蕴涵有一个非常好的解释:https://ericlippert.com/2015/11/05/logical-implication/

此外, 李的回答确实是对的。 格式的逻辑含义

  C#中的a =&gt; b是(!a || b)

因此,回答问题将是

  

a&lt; = b in C#是(a ||!b)

答案 2 :(得分:0)

当我将规则分解为更简单的术语时,我得到了:

  1. 如果a == bftrue
  2. 否则,f == a
  3. 因此,这个表达式的一个简单形式是:

    f = (a == b) || a