我一直试图在2D数组中打印出_
< ------这个字符......但是当我
尝试编译代码,它返回了一些垃圾数字。我想我做错了什么......有人可以帮我解决这个问题吗?
void main (){
int A[9][9];
for (int i=0; i<9; i++){
for (int j=0; j<i; j++){
A[i][j]= '_';//I am doing this part wrong.
}
}
for (int r=0; r<9; r++) {
for (int c=0; c<9; c++)
cout << setw(3) << A[r][c];
cout << endl;
}
system("pause");
}
答案 0 :(得分:1)
A是一个int数组。所以cout会尝试打印一个整数。试试cout << char(A[r][c]);
答案 1 :(得分:1)
std::cout::operator<<
运算符因多种数据类型而过载,以便于(自动)格式化输出。如果您输入int
,则会打印一个数字。如果你给它一个char
,它会尝试将它打印成一个角色。因此要么将数组声明为char
数组,要么在打印时强制转换数组成员:
cout << static_cast<char>(array[i][j]) << endl;
答案 2 :(得分:0)
<击> 1.将ASCII值分配给整数数组而不是“_”。即使没有改变,它也会工作;但我觉得它看起来更干净。
A[i][j]= 95; // try this instead of '_'
击> <击> 撞击>
打印时,cout可以打印任何数据类型而不进行转换,但由于我们正在寻找要打印的字符,请尝试显式转换。
cout << setw(3) << char(A[r][c]);
不确定您使用的编译器,但更好的做法是初始化阵列以避免垃圾值篡改您的输出