运营商&&'不能应用于'int'和'bool'类型的操作数

时间:2014-11-26 18:43:23

标签: c# int boolean operators

我试图找出输入的数字是否可以被9和13整除,但它不会让我使用我需要的运算符,我知道变量类型是错误的但我不知道如何使它变得如此变量类型被接受,对编码来说是新的,所以答案应尽可能基本而不需要小便

public bool IsFizzBuzz(int input)
{
    if ((input % 9) && (input % 13) == 0)
    {
        return true;
    }
    else
    {
        return false;
    }
}

3 个答案:

答案 0 :(得分:12)

由于== operatorhigher precedence而非&& operator,因此您的if语句会先计算;

(input % 13) == 0

部分,返回truefalse取决于您的input。你的if语句就像是;

(input % 9) && true // or false

因为input % 9表达式返回int,所以最后,你的if语句将是;

int && true

和逻辑AND在intbool变量之间毫无意义。

来自&& Operator (C# Reference)

  

条件AND运算符(&&)执行其 bool的逻辑AND   操作数,但只在必要时才计算其第二个操作数。

你说;

  

我试图找出输入的数字是否可被整除   9和13

然后你应该使用它们;

if ((input % 9 == 0) && (input % 13 == 0))

答案 1 :(得分:3)

你无法将两个括号中的陈述与一个比较进行比较,你必须做如下的事情。

if( (input % 9 == 0) && (input % 13 == 0) )

答案 2 :(得分:2)

那是因为&&运算符的优先级高于==运算符,所以语句的计算方式如下:

if (((input % 9) && (input % 13)) == 0)

不喜欢这样:

if ((input % 9) && ((input % 13) == 0))