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 个。
这是我为找出问题所在所做的行和项目请求的列表。
- 第 0 行,第 0 项,预期结果 0,实际结果 2
- 第 3 行,第 2 项,预期结果 6,实际结果 0
- 第 1 行,第 0 项,预期结果 3,实际结果 6
- 第 5 行,第 1 项,预期结果 5,实际结果 0
- 第 8 行,第 2 项,预期结果 6,实际结果 13629648
- 第 7 行,第 2 项,预期结果 6,实际结果 0
供参考,这是我一直用来从数组中调用项目的代码
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
。
正如标题所说,我的代码读取二维数组完全错误。
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 个。 这是我为找出问题所在所做的行和项目请求的列表。
- 第 0 行,第 0 项,预期结果 0,实际结果 2
- 第 3 行,第 2 项,预期结果 6,实际结果 0
- 第 1 行,第 0 项,预期结果 3,实际结果 6
- 第 5 行,第 1 项,预期结果 5,实际结果 0
- 第 8 行,第 2 项,预期结果 6,实际结果 13629648
- 第 7 行,第 2 项,预期结果 6,实际结果 0
供参考,这是我一直用来从数组中调用项目的代码
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
。