【发布时间】:2021-03-26 13:01:27
【问题描述】:
|是 OR 并且 & 是 AND。
我有以下代码,它们的工作原理相反。
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的意思不是“全部为 0”,而是“没有设置公共位” -
您是否将 bitwise 或
|与 logical 或||混淆了? -
a == 0 && b == 0 && c ==0... 你必须使用 && 来表示and和 ||对于或 -
@Jawad 实际上,如果您这样做,您可以使用
&,因为您现在正在处理bool值,这将表现为逻辑与。但是&&将短路并在第一个false值处停止比较。始终使用||和&&进行逻辑运算的一个原因是,您不能意外地将它们应用于不是bool的任何东西。
标签: c# visual-studio logical-operators