【问题标题】:Booleen check in C#; converting codeC# 中的布尔检查;转换代码
【发布时间】:2013-07-26 18:52:08
【问题描述】:

如果找到这段代码:

int error;
if (error > 0)
{
    if (error || (move_y > 0))
    {
        los_x_1 += move_x;
        error -= delta_y;
    }
}

这里:http://roguebasin.roguelikedevelopment.org/index.php?title=Another_version_of_BLA

我以为代码是用 C# 编写的,但上面的代码块不起作用;我在想它正在检查它是否'error == 1',但我不确定。有什么想法吗?

【问题讨论】:

  • 我没有尝试编译此代码,但恕我直言,它不是有效的 C#。 errorint,而不是 bool,因此逻辑 OR 运算符应该拒绝应用于它和 move_y > 0
  • 在我看来它可能是 javascript。
  • @Lee - 紧接着错误也被视为布尔值。
  • @Jeffery,不是int,没有。
  • @JefferyKhan - 是的,如果这是 C#,由于几个原因,代码将无法编译。但是,看起来问题在于它实际编译的是哪种语言,所以它可能是 C 或 C++。

标签: c# boolean int


【解决方案1】:

不,这可能是 C(或 C++),其中“任何非零值”对于布尔构造都被视为“真”。所以 C# 将是:

int error;
...
if (error > 0)
{
    if (error != 0 || (move_y > 0))
    {
        los_x_1 += move_x;
        error -= delta_y;
    }
}

但是,由于这已经在 if (error > 0) 内,因此没有意义,因为条件总是为真 - 代码有效:

if (error > 0)
{
    los_x_1 += move_x;
    error -= delta_y;
}

(编辑:当然,这并不是说代码正确...只是显示它目前的实际作用。)

【讨论】:

  • 是否也使用未初始化的变量会来自原始代码?
  • 关于等效代码:(move_y > 0)呢,你如果通过if (error > 0)甚至move_y是负值
  • 谢谢,同样的问题问了两次让我失望了。
  • 实际上move_y > 0 永远不会被执行;它总是短路的,因为此时error != 0 总是为真。 (这可能是 Anthony 的转录错误,应该是 && 而不是 || 或原始代码中的实际逻辑错误)编辑:我同意,最有可能意图是@ 987654331@ 以某种方式被考虑在内,尽管我不肯定是否应该在error > 0 && move_y > 0error > 0 || move_y > 0 时出现。 Jon 只是提到了有效代码是基于发布的内容以及它实际执行的方式。
  • 我测试了所有三种方式的代码,它应该是:'if (error > 0 || move_y > 0)' - 再次感谢您的帮助。上面的 cmets 也帮助了我。
【解决方案2】:

此代码使用 C/C++ 编写。在 C# 中,您不能将 int 隐式转换为布尔值。但是,您可以更改 if 语句以检查 if ((error != 0) || (move_y) > 0)

【讨论】:

    【解决方案3】:

    这可能是 c 或 c++。

    在这些(任何许多其他语言)中,整数可以解释为布尔值,其中 0 是false,任何其他值都是true

    【讨论】:

      【解决方案4】:

      嗯,是的,那就是:

      int error;
      if (error > 0)
      {
          if (error !=0  || (move_y > 0))
          {
              los_x_1 += move_x;
              error -= delta_y;
          }
      }
      

      再一次,我没有看到 los_x_1 的定义

      【讨论】:

        【解决方案5】:

        它在 C 中。页面源代码中的 <syntaxhighlight lang="c"> 说明了这一点。

        嵌套if 的含义超出了我的理解。如果外部if 中的(error > 0) 为真,则嵌套if 中的条件也始终为真。

        【讨论】:

          猜你喜欢
          • 2022-01-23
          • 2015-05-13
          • 1970-01-01
          • 2011-12-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多