【问题标题】:Operator || cannot be applied to operands of type bool and int [closed]运算符 ||不能应用于 bool 和 int 类型的操作数
【发布时间】:2013-12-09 18:27:40
【问题描述】:

我今天早上刚遇到一个奇怪的问题,让我想知道为什么突然出现这种类型的错误,看看这段代码:

    if(age == 0 || age == 47 || age = 99)
    {
        name = "Those are lucky numbers!";
    }
    else
    {
        name = "Try again...";
    }

错误是:错误 CS0019: Operator '||'不能应用于“bool”和“int”类型的操作数。

什么...?呵呵...我的意思是类型'bool'和'int'是我们希望在这种操作中使用的最常见的类型。他们为什么不工作?

此外,我确信我之前已经这样做了数千次,我不明白为什么今天会发生......或者也许我使用 Ruby 语言做到了这一点。我仍然真的有以前用 C# 工作的感觉。

任何人有一个合乎逻辑的解释?我今天错过了什么? :D

【问题讨论】:

  • 这是您的问题:age = 99
  • 这个问题似乎是题外话,因为问题只是一个语法错误。
  • 你在 'age = 99' 中有 '=' 而不是 '=='...
  • 你很幸运,它不是 C++,否则你甚至都不知道发生了什么。
  • @ZongZhengLi 为什么语法错误跑题了?

标签: c# logical-operators


【解决方案1】:

您的上一个年龄需要第二个= 进行比较

 if(age == 0 || age == 47 || age == 99)

你有age = 99

【讨论】:

    【解决方案2】:

    条件的最后一个组件age = 99 的计算结果为int,而不是bool,因为您使用了赋值运算符=,而不是相等运算符==

    【讨论】:

      【解决方案3】:

      我的意思是 'bool' 和 'int' 类型是我们想要执行此类操作的最常见类型

      没有。

      那个错误是说你不能写像true || 42这样的东西。
      这没有任何意义。

      您的实际问题是age = 9赋值,而不是比较

      【讨论】:

        【解决方案4】:

        你的意思是age == 99,而不是age = 9

        age = 9 是一个计算结果为9 的表达式,其副作用是将变量age 设置为9。因此,您可以执行a = (age = 99) 之类的操作,并且a(如果已声明为int)将设置为99

        这就是为什么您的错误消息抱怨 int 被传递给 ||

        一种调试策略是将其写成多行:

        if( a ||
            b ||
            c)
        

        这将隔离您的错误所抱怨的操作员。在这种情况下,您可能已经看到了您的错误。

        【讨论】:

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