C++ 二维算法代码读取数组错误

C++ 2D algorithm code is reading the array wrong

正如标题所说,我的代码读取二维数组完全错误。

    const int WINNING_ROWS[8][3] = { (0, 1, 2),
                                     (3, 4, 5),
                                     (6, 7, 8),
                                     (0, 3, 6),
                                     (1, 4, 7),
                                     (2, 5, 8),
                                     (0, 4, 8),
                                     (2, 4, 6) };

以上是我的二维数组。 我的程序好像不能正常读取。

例如,如果我要求第 2 行第 1 项,我希望有 7 个,但它却给了我 6 个。 这是我为找出问题所在所做的行和项目请求的列表。

供参考,这是我一直用来从数组中调用项目的代码

cout << WINNING_ROWS[7][2] << endl;

编辑 1:忽略粗体项,这是我在测试代码时的错误。

编辑2:我的问题已经得到解答。

WINNING_ROWS[8][2] 超出了数组边界,这意味着它将导致未定义的行为。如果你想得到最后一个元素,你应该尝试 cout << WINNING_ROWS[7][2] << endl; 因为它们是 0-indexed.

const int WINNING_ROWS[8][3] = { (0, 1, 2),
                                     (3, 4, 5),
                                     (6, 7, 8),
                                     (0, 3, 6),
                                     (1, 4, 7),
                                     (2, 5, 8),
                                     (0, 4, 8),
                                     (2, 4, 6) };

这并不代表您认为的那样。 (0,1,2) 不是一行三个元素,而是使用逗号运算符计算的单个整数。 0,1,2 的计算结果为 2

您需要使用正确的 {...} 大括号而不是圆括号,或者完全不使用大括号。


也建议您将 const 更改为 constexpr