【问题标题】:Operator '&&' cannot be applied to operand of type 'bool' and 'int'运算符“&&”不能应用于“bool”和“int”类型的操作数
【发布时间】:2011-12-02 04:14:54
【问题描述】:

我有一个 if elseif 语句来检查标记并根据条件对标记进行评分。

int marks;
string grade;

if (marks>=80 && marks!>100)
{
  grade = "A1";
}
else if (marks>=70 && marks!>79)
{
  grade = "A2";
}

等等……

然而,当我编译它时,我得到了

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

帮我修一下。提前谢谢。

【问题讨论】:

  • 很高兴您可以通过缝合标志来制作运算符。
  • @Dani:这比你想象的更有意义。毕竟<=是“小于或等于”,!=的意思是“不等于”。 !> 似乎是“不大于”的自然翻译。只是碰巧它不是有效的 C#。
  • @cHao:我想说的是语言是一套规则,而不是你认为的“自然翻译”
  • @Dani:“自然翻译”来自于采用已知规则并进行推断。思维过程是合理的——如果语言内部不一致,它并不总是正确的。

标签: c# .net


【解决方案1】:

那不是真正的运算符:

!>

不大于<=(小于或等于)

编辑:您想说的实际上也可以使用 !操作员。但它会是

!(marks > 100 )

【讨论】:

  • 不敢相信我有多傻。非常感谢你。那行得通。
【解决方案2】:

其他答案表明主要问题是!> 不是运算符。

我想建议,由于您正在测试 marks 是否在特定范围内,因此您需要进一步采取进一步的步骤来格式化您的条件表达式以使用以下模式:

if (80 <= marks && marks <= 100)
{
  grade = "A1";
}
else if (70 <= marks && marks <= 79)
{
  grade = "A2";
}

这是一个简单的,也许是微妙的变化,但我认为它使范围检查的意图更加清晰。

【讨论】:

    【解决方案3】:

    你用错了运算符,

    一定是的。

    int marks;
    string grade;
    
    if (marks>=80 && marks<=100)
    {
      grade = "A1";
    }
    elseif (marks>=70 && marks<=79)
    {
      grade = "A2";
    }
    

    你也可以这样做

    int marks;
    string grade;
    
    if (marks>=80 && !(marks>100))
    {
      grade = "A1";
    }
    elseif (marks>=70 && !(marks>79))
    {
      grade = "A2";
    }
    

    【讨论】:

    • 感谢@Eppiey,运算符 不能与 not 一起使用,只有 = 可以与 != 一起使用。
    【解决方案4】:
    int marks;
    string grade;
    
    if ((marks>=80) && !(marks > 100))
    {
    grade = "A1";
    }
    else if ((marks>=70) && !(marks > 79))
    {
    grade = "A2";
    }
    

    【讨论】:

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