[英]c# if or logic comparison
有人可以用||解释ifs的逻辑吗 在c#中,因为此刻所有三个if都执行
string bla = "0";
if (bla != "0" || bla != "")
{
//
Console.WriteLine();
}
if (bla != "0" | bla != "")
{
//
Console.WriteLine();
}
if (bla == "0" || bla == "")
{
Console.WriteLine();
//
}
粗体部分是导致IF条件通过的原因。
我不会深入解释按位运算符,但是您需要在这里知道的是,即使第一部分是真实的,它也将执行第二部分(即,它不像逻辑运算符那样懒惰)。
如果||都是正确的 和 are或operator和bla不能同时等于零和空字符串。 这意味着or子句之一始终求值为true,并导致所有if语句执行。
您是否要使用&&(和)运算符?
那就是“ OR”运算符。 如果要执行,只需要满足一个条件即可。
通过替换变量并“大声读出”,您将获得以下信息:
#1,如果“ 0”!=“ 0”或“ 0”!=“”在这种情况下,确实是“ 0”!=“”
#2如果“ 0”!=“ 0” | “ 0”!=“”在这种情况下,您将| true(按位),等于true
#3,如果“ 0” ==“ 0”或“ 0” ==“”,在这种情况下,“ 0” ==“ 0”为真,则整个条件为真。
您可以使用&&(AND)运算符尝试比较这些差异。
||
是从基础数学派生而来的另一种选择。 可以理解为OR
连通性,如果我们至少给出了两个逻辑公式p,q,则适用下表。 1是true 0我是false。
p | q | p || q
0 | 0 | 0
0 | 1 | 1
1 | 0 | 1
1 | 1 | 1
任何条件指令中的逻辑表达式均由数学已知的逻辑规则求值。
在提出更多问题之前,您应该了解以下内容:连词&&
,替代||
,独家替代^
和一元运算符取反!
您还应该了解懒惰评估。
|| ifs表示“或”条件,因此在代码中,当bla等于“ 0”或bla等于“”时,每个if都将执行。 如果相等则有3个,因此它们将被执行,因为bla等于“ 0”。
||
之间的区别 和|
,是逻辑Or( ||
)的值,如果第一个操作数的值为True,则第二个操作数的值为不。 对于按位或( |
),始终都会对它们进行求值。 在您的情况下,结果是相同的。
有关更多详细信息,请参见MSDN 。
比较这些的方式是这样的:
使用“ 或 ”( ||
)比较器,如果一个或两个为真,则整个比较为真。 即
true || false = true
true || true = true
false || false = false
因此,因为在所有三个比较中,其中一个比较成立,所以所有三个都执行
硬币的反面: 和 ( &&
)的工作方式相反
true && false = false
false && false = false
true && true = true
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.