C 格式的 2D 数组网格,每个坐标具有不同的字符


int attack_grid[10][10] = { {0} };
void drawAttackGrid()
{
    int i, j, x = 0, y = 0;
    for (i = 0; i <= 10 - 1; i++) {
        for (j = 0; j <= 10 - 1; j++) {
            if (attack_grid[x][y] > 0)
                printf(" * ");
            else if (attack_grid[x][y] < 0)
                printf(" ~ ");
            else
                printf(" ? ");
            y++;
        }
        printf("n");
        x++;
    }
}

所以我正在尝试根据其他仅用零填充的 10x10 数组中的坐标值用不同的字符填充这个 10x10 数组(我稍后将更改这些值,这就是为什么我需要它是通用的(。根据我的代码,它应该只打印" ?",但是输出中也有一些" * "。有人可以解释一下为什么我在那里得到那些" * "吗?

由于

y 的值,您的程序具有未定义的行为。

y在内部循环中递增,但在重复外部循环时永远不会重置为 0。

在外部循环的第二次运行中,y 的值将从 10 开始,而不是从 0 开始。

在外循环的第三次运行中,y 的值将从 20 开始,而不是从 0 开始。

对于外循环的其余迭代,这种情况将继续进行。

您可以删除冗余索引xy。使用attack_grid[i][j]而不是attack_grid[x][y]

最新更新