1

如果找到这段代码:

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',但我不确定。有任何想法吗?

4

5 回答 5

7

不,这可能是 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;
}

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

于 2013-07-26T18:55:23.547 回答
3

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

于 2013-07-26T18:54:38.753 回答
3

这可能是 c 或 c++。

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

于 2013-07-26T18:54:59.723 回答
0

嗯,是的,这与以下内容相同:

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

再说一次,我没有看到任何定义los_x_1

于 2013-07-26T18:56:07.557 回答
0

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

他们所说的嵌套if是什么意思超出了我的范围。如果(error > 0)外部if为真,则嵌套中的条件if也始终为真。

于 2013-07-26T18:59:37.447 回答