输出的数组值与存储的值不同
Outputted array values different from the values stored
我制作了一个数组,并在initializeBoard
函数中设置了从1到9的值,但由于某种原因,当我打印这些值时,它们显示为0到8。为什么会发生这种情况?难道它不应该输出1到9吗?因为这些是我在initializeBoard
中放入数组的数字?
int main()
{
initializeBoard();
ticTacToeBoard();
}
void initializeBoard()
{
for (int i = 1; i < 9; i++)
ticTacBoard[i] = i;
cout << endl;
}
void ticTacToeBoard ()
{
for (int y = 0; y < 3; y++)
{
for (int x = 0; x < 3; x++)
cout << ticTacBoard[3 * y + x] << " ";
cout << endl;
}
}
您有一个差一的错误。数组在c++中使用从零开始的索引。您的代码没有给数组的0 元素赋值。
试试这个:
for (int i = 0; i < 9; i++)
{
ticTacBoard[i] = i + 1;
}
循环:
for (int i = 1; i < 9; i++)
{
ticTacBoard[i] = i;
}
将只执行1-8,因为当i++将其增加到9时它将停止,因此您没有初始化所有9个元素。
你应该像这样做同样的循环:
for (int i = 0; i < 9; i++)
{
ticTacBoard[i] = (i + 1);
}
问题在于:
ticTacBoard[i] = i;
应:ticTacBoard[i-1] = i;
两个建议:
- 在用
[]
访问ticTacBoard
之前不应该初始化它吗?确保为所有插槽提供足够的内存!(我猜你在玩井字游戏,所以你需要3x3 = 9个槽) - c++中的索引从0开始。你想输入
for (i=0; i<9; i++)
希望这对你有帮助!
您的i
从0
开始,因此您的第一个值将是0
。由于不等式i < 9
在i = 9
、i
实际上从来不是9
时被打破(循环在你的代码实际运行之前退出)。
尝试使用<=
而不是<
来解释i = 9
:
for (int i = 1; i <= 9; i++)
{
ticTacBoard[i - 1] = i;
}
除此之外,数组从c++(以及几乎所有其他语言)的0
开始索引,因此第一个元素是array[0]
,第二个是array[1]
,等等。
您必须从数组索引中减去1
。
相关文章:
- C++:将控制台输出存储在宏中更好吗
- 如何将图像传入C++可执行文件并将输出图像存储在新目录中?
- 如何存储 unicode 字符并将其输出到文件?
- C++:将 std::set_union() 输出存储在 std::multiset 中
- 存储和打印字符,但输出不是预期的
- 如何将函数的输出数据存储在文本文件中
- 我可以将函数的输出参数存储到unique_ptr中吗?
- 将笛卡尔点存储在矢量和输出距离中
- 使用RapidJson凝结JSON文件后,如何将输出存储在C 字符串中
- 如何将预定义数据类型的值存储到数组中并输出它
- 基于C++模板指针的变量会导致返回垃圾,除非之前存储和输出
- 为什么字符串变量"sum"不存储任何数据,程序不给出任何输出
- C++输出流删除存储的数据
- 集合差分的输出可以存储在第一个输入中
- 使用数组,将数据存储在数组中并输出它们
- 使用 QSqlQuery 检索 MySQL 存储过程的输出
- C++:将存储在List容器中的数据输出到文本文件中
- 字符数组输出正确,但实际上没有存储正确的值
- 有没有一种方法可以将阈值运算输出存储在Eigen(C++)中
- 十六进制字符到十进制,并将输出存储为字符