为什么 "not equal" 和 "or" 在 c# 中不起作用(检查数字是否为二进制)?
why does "not equal" with "or" doesn't working in c# (check if number is binary)?
我真的不明白为什么它不起作用。 (它应该检查数字是否为二进制)
为什么运算符不适用?
using System;
class MainClass
{
public static void Main(string[] args)
{
Console.WriteLine(IsBin(100));
Console.WriteLine(IsBin(10011012));
Console.WriteLine(IsBin(10911010));
}
public static bool IsBin(long num)
{
while (num > 0)
{
if ((num % 10) != 1 || (num % 10) != 0)
{
return false;
}
num /= 10;
}
return true;
}
}
||
的每一侧至少有一个表达式始终为真。所以使用 ||
的表达式的结果始终为真。
您可以使用 !
(不是)检查一个表达式,但这会降低您的代码的可读性,因此我建议将结果存储在一个临时变量中以提高可读性。
您可能正在使用:
var isZeroOrOne = (num % 10) == 1 || (num % 10) == 0)
if (!isZeroOrOne)
{
return false;
}
num /= 10;
太长,无法阅读:在您的 if 语句中使用 &&
而不是 ||
。
对于那些想知道原因的人:
OR operator(||
) returns true
当至少一侧是 true
时。 So 100%10=0
和 0!=1
为真,因此整个 or 语句将 return 为真,程序将跳转到您的 if 语句。
AND operator(&&
) returnstrue
only when both sides are true
。 0!=1
为真,但 0!=0
为假,因此 && 运算符将 return 为假,您的 if 将不会被执行。
清楚了吗?
我真的不明白为什么它不起作用。 (它应该检查数字是否为二进制) 为什么运算符不适用?
using System;
class MainClass
{
public static void Main(string[] args)
{
Console.WriteLine(IsBin(100));
Console.WriteLine(IsBin(10011012));
Console.WriteLine(IsBin(10911010));
}
public static bool IsBin(long num)
{
while (num > 0)
{
if ((num % 10) != 1 || (num % 10) != 0)
{
return false;
}
num /= 10;
}
return true;
}
}
||
的每一侧至少有一个表达式始终为真。所以使用 ||
的表达式的结果始终为真。
您可以使用 !
(不是)检查一个表达式,但这会降低您的代码的可读性,因此我建议将结果存储在一个临时变量中以提高可读性。
您可能正在使用:
var isZeroOrOne = (num % 10) == 1 || (num % 10) == 0)
if (!isZeroOrOne)
{
return false;
}
num /= 10;
太长,无法阅读:在您的 if 语句中使用 &&
而不是 ||
。
对于那些想知道原因的人:
OR operator(||
) returns true
当至少一侧是 true
时。 So 100%10=0
和 0!=1
为真,因此整个 or 语句将 return 为真,程序将跳转到您的 if 语句。
AND operator(&&
) returnstrue
only when both sides are true
。 0!=1
为真,但 0!=0
为假,因此 && 运算符将 return 为假,您的 if 将不会被执行。
清楚了吗?