Iam在应用程序上工作,我需要根据其他两个布尔变量f
和a
中的值获取布尔标志值b
。以下是条件:
a
和b
都为真,则f
为true
。a
和b
均为假,则f
为true
。a
为真且b
为假,f
为true
。a
为false且b
为真f
为false
我想知道是否有一种更简单的方法(比如单个运算符)来获取f的值,而不是我拥有的值:
a?true:(b?false:true)
答案 0 :(得分:8)
a ? true : cond
相当于a || cond
,b ? 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)
当我将规则分解为更简单的术语时,我得到了:
a == b
,f
为true
f == a
因此,这个表达式的一个简单形式是:
f = (a == b) || a