C# c逻辑运算符的问题&and|
|是一个OR and&is and 我有下面的代码,它们的工作原理是相反的C# c逻辑运算符的问题&and|,c#,visual-studio,logical-operators,C#,Visual Studio,Logical Operators,|是一个OR and&is and 我有下面的代码,它们的工作原理是相反的 int a = 0; int b = 0; int c = -1; if ((a | b | c) == 0) { textBox8.Text = "everything 0"; } else
int a = 0;
int b = 0;
int c = -1;
if ((a | b | c) == 0)
{
textBox8.Text = "everything 0";
}
else
{
textBox8.Text = "something is not a 0"; // <- code goes here
}
if ((a & b & c) == 0)
{
textBox9.Text = "everything 0"; // <- code goes here
}
else
{
textBox9.Text = "something is not a 0";
}
为什么我会有这个结果
a | b | c==0并不意味着a为零或b为零或c为零。为此,您需要a==0 | b==0 | c==0,您还可以使用| |,它在一个操作数为真后停止计算
对于数字操作数,|是一个,您可以单独阅读对于除布尔操作数以外的任何操作数都无效,因此养成使用| |的习惯可能会很有用,除非您明确地不这样做;我不想短路。这样,当缩进以将其用作逻辑运算符时,就不会意外地将其用作位运算符。例如,在本例中可能是编译器错误。因为a&b&c==0并不意味着一切都是0,但没有公共位设置。您是否会将按位或|与逻辑或| |?a==0&&b==0&&c==0混淆。。。您必须使用&&for和| | forOr@Jawad实际上,如果你这样做的话,你可以使用&因为你现在处理的是bool值,这将表现为一个逻辑and。但是,&&将短路并在第一个假值时停止比较。在逻辑运算中总是使用| |和&&的一个原因是,您不能意外地将它们应用于任何非bool的对象。