【问题标题】:Operator '&&' can't be applied to operands of type 'int' and 'bool'运算符“&&”不能应用于“int”和“bool”类型的操作数
【发布时间】:2015-01-25 05:23:35
【问题描述】:

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

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

【问题讨论】:

  • 类似if((input%9 == 0) && (input%13==0))
  • 未来要考虑的事情...看看你在做什么——你知道%做了什么(或者看起来如此)所以你知道这个input%9必须评估为一些东西,所以你需要评估你认为它会评估的东西(在本例中为 0)

标签: c# int boolean operators


【解决方案1】:

由于== operatorhigher precedence 具有&& operator,因此您的 if 语句首先计算;

(input % 13) == 0

part 并且返回 truefalse 取决于您的 input。你的 if 语句会是这样的;

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

由于input % 9 表达式返回int,最后你的if 语句将是;

int && true

intbool 变量之间的逻辑 AND 没有意义。

来自&& Operator (C# Reference)

条件与运算符 (&&) 对其 bool 执行逻辑与 操作数,但仅在必要时评估其第二个操作数。

你说;

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

那么你应该像这样使用它们;

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

【讨论】:

  • 许多+1的细节和解释:D
【解决方案2】:

您不能将两个括号中的语句与一个比较进行比较,您必须执行以下操作。

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

【讨论】:

    【解决方案3】:

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

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

    不是这样的:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多