我是 c++ 的新手.学习基本知识后,我想做井字游戏.对于印刷板,我在下面写代码,但它显示错误
I am new in c++ .After learning basic I want to make tic tac toe.For printing board i write below code but it shows errors
我是 c++ 的新手。学习基本知识后,我想做井字游戏。
对于印刷板,我在下面编写代码,但它显示错误:
#include<iostream>
using namespace std;
int main(){
char board[8]={'_','_','_n','_','_','_n','_','_','_n'};
cout<<'|'+ board[0]+'|'+ board[1]+'|'+ board[2]<<endl;
cout<<'|'+ board[3]+'|'+ board[4]+'|'+ board[5]<<endl;
cout<<'|'+ board[6]+'|'+ board[7]+'|'+ board[8]<<endl;
return 0;
}
这里有几个错误:
-
too many initializers for ‘char [8]’
将板定义为包含 8 个元素,并在项目列表中应用 9 个元素。 -
narrowing conversion of ‘24330’ from ‘int’ to ‘char’
'_n'
是 2 个字符,而不是单个字符。
修复:
char board[12] = {'_', '_', '_', 'n', '_', '_', '_', 'n', '_', '_', '_', 'n'};
第三个错误是算法错误,而不是编译错误 - 使用循环迭代数组元素。
解决方案是在声明正在初始化的数组时不指定任何数组边界:
char board[]={'_','_','_','_','_','_','_','_','_'};
编译器将自动确定要初始化的字符数。
如果有 67 或 142 个项目怎么办? 希望您不会尝试计数并找出要放置在数组中的数字,因为这容易出错。 让编译器为您完成这项工作。
其次,'_n'
不是一个单一的角色。 如果您确实想在数组中放置换行符:
char board[]={'_','_','_','n','_','_','_','n','_','_','_','n'};
如果您以后想知道字符数:
const int num_characters = sizeof(board) / sizeof(board[0]);
或者,如果您使用的是 C++17 或更高版本:
std::size(board);
正如之前的答案已经指出的那样。有两件事需要改变:
- 删除"">
- 更改电路板阵列大小。
- 删除
+
符号,因为它只会添加两个字符,就好像它是两个数字一样。
所以这是这三个之后的结果:
#include<iostream>
using namespace std;
int main(){
char board[9]={'_','_','_','_','_','_','_','_','_'};
cout << '|' << board[0] << '|' << board[1] << '|' << board[2] << endl;
cout << '|' << board[3] << '|' << board[4] << '|' << board[5] << endl;
cout << '|' << board[6] << '|' << board[7] << '|' << board[8] << endl;
return 0;
}
注意:我编辑了我的答案,并在下面的评论之后添加了第三步。
相关文章:
- 我是 c++ 的新手.学习基本知识后,我想做井字游戏.对于印刷板,我在下面写代码,但它显示错误
- 当我从下面的代码中删除关键字 virtual 时,它可以正常工作,否则会出现错误。在这里"virtual"字的意义是什么?
- OpenGL - 在 NDC 中计算位置适用于着色器,但不适用于'regular'程序
- 在数组中输入 n 个整数的列表,并以类似于钟摆来回移动的方式排列它们. 输入-1 3 2 5 4,输出5 3 1 2 4
- 为什么我们不在下面给出的代码中使用指针来实例化C++的实体对象?
- atoi() 在应用于大型命令行参数时会产生不正确的值
- 错误:从"int"到"int*"的转换无效[-允许].我在下面提供了我的代码,我
- 请找出我的代码中的错误,它在提交得到错误答案的同时仍然适用于我的所有测试用例
- 在功能块中使用新运算符时存在于堆或堆栈上?
- 如何在相对于观看方向的地形中移动
- 在下面函数的返回中添加 const 限定符的重要性是什么?
- 为什么对数组的常量左值引用不编译在下面?
- C++新运算符是否在下面使用 malloc()
- 使用新线程在类似于 Scott Meyer 的单例习惯用法的实现中实例化单例是否安全?
- 这些会做什么(映射[x] [y] = 2;,map [x] [y] = 3;,以及map [x] [y] = 4;在下面
- 如何在我的 txt 文件中编写并在下面附加文本
- 如何在类似于 C 的C++中打印浮点数
- 我是否可以在类似于 C# 的 C++ 中创建全局命名空间层次结构,以帮助开发人员使用我们的代码?
- c++如何打印数组值相邻而不是在下面
- 我可以避免在下面使用offset吗?