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

时间:2011-12-02 04:14:55

标签: c# .net

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

int marks;
string grade;

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

依旧.....

但是,当我编译它时,我得到了

  

运营商'&&'不能应用于'bool'和'int'

类型的操作数

帮我修好它。谢谢你。

4 个答案:

答案 0 :(得分:13)

这不是一个真正的运营商:

!>

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

编辑:你想说的话实际上也可以用!来表达!运营商。但它会是

!(marks > 100 )

答案 1 :(得分:4)

你使用了错误的操作符,

必须是。

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";
}

答案 2 :(得分:4)

其他答案让人们知道主要问题是!>不是运营商。

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

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

这是一个简单而且可能是微妙的变化,但我认为这使得范围检查意图更加明确。

答案 3 :(得分:1)

int marks;
string grade;

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