【问题标题】:convert bool to int?将 bool 转换为 int?
【发布时间】:2012-04-22 22:13:35
【问题描述】:

我有这段代码,但我不明白为什么我不能使用运算符 ||在这个例子中。

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

我错过了什么吗?这个布尔值在哪里?

int i = 1;                            
if ( i == 1)
{
    Response.Write("-3");
}
else if (i == 5 || 3) //this is the error, but where is the bool?
{
    Response.Write("-2");
}

【问题讨论】:

  • 这样做else if (i == 5 ||i == 3)
  • 抱歉 #2,这里是 c#.NET。当然,谢谢。我已经好几个月没有使用这些工具了,显然有点生疏了。
  • 您答案的详细信息取决于您的编程语言,但基本问题是您将 i == 5(将评估为布尔值 true 或 false)与 3(一个 int)进行比较.在某些语言中,这可以正常工作,但可能不是您想要的方式。上面安东的评论可能解决了您正在尝试做的事情。
  • 5 || 3 是一个布尔值。 i == 5 是一个布尔值。不管你怎么解析,都没有意义。
  • 顺便说一句,我会确保不再犯这个菜鸟错误,我误解了数据类型。我会再看一遍,但谢谢。它当然适用于 else if (i == 5 ||i == 3)

标签: c# operands


【解决方案1】:

您需要将 x 与 y 和/或 x 与 z 进行比较,大多数语言都不允许将 x 与(y 或 z)进行比较。当您添加一个 int 的“3”时,引入了 bool。编译器认为你想要 (i == 5) || (3) 这不起作用,因为 3 不会自动转换为 bool(可能在 JavaScript 中除外)。

int i = 1;                            
        if ( i == 1)
        {
            Response.Write("-3");
        }


        else if (i == 5 || i == 3) //this is the error, but where is the bool?
        {
            Response.Write("-2");
        }

【讨论】:

    【解决方案2】:

    您也可以使用 switch 语句。案例3和5是一样的
    示例

    int i = 1;
    
            switch (i)
            {
                case 1:
                    Response.Write("-3");
                    break;
                case 3:
                case 5:
                    Response.Write("-2");
                    break;
            }
    

    希望对你有帮助

    【讨论】:

      【解决方案3】:

      您收到错误的原因是因为您试图对无法解析为布尔方程的事物执行布尔评估:

      if (false || 3)
      

      这里的 '3' 不计算为布尔方程。

      如果你把它改成

      if (false || 3 == 3)
      

      然后你会发现它会起作用。

      【讨论】:

        猜你喜欢
        • 2017-02-24
        • 2015-12-01
        • 2014-09-19
        • 2011-09-28
        • 1970-01-01
        • 2016-11-29
        • 2012-01-14
        • 1970-01-01
        • 2015-10-07
        相关资源
        最近更新 更多