2D 数组:写入后记录不明确的'48'



我对编码和这些论坛很陌生,所以如果我搞砸了,请耐心等待。

无论如何,对于这个问题,我正在创建一个2D数组,为我的游戏策划人保存过去的猜测,作为记录,这样用户就可以回顾他们以前的尝试。我为旧的猜测制作了一个2D阵列,从我的小"确保它能正常工作"尝试来看,它运行得很好。然而,旧的反馈几乎完全相同(比如你在正确的地方得到了2种颜色,1种在错误的地方,1种完全错误的颜色),它搞砸了,数字48出现在其中,无论在哪里,无论在生活中,我都不知道为什么。

这是我的代码:

const int FEEDBACK_ARRAY_ROWS = 8;
const int FEEDBACK_ARRAY_COL = 3;
int fb_cur_row = 0;
int fb_cur_col = 0;
int Feedback2DArray[FEEDBACK_ARRAY_ROWS][FEEDBACK_ARRAY_COL];
for(int i  = 0; i < 3; i++)
{
    Feedback2DArray[fb_cur_row][fb_cur_col] = feedback_string[i];
    fb_cur_col++;
    cout << feedback_string[0];
    cout << Feedback2DArray[0][0];
}
fb_cur_row++;
for(int i = 0; i < fb_cur_row; i++)
{
    for(int j = 0; j < 3; j++)
    {
        cout << Feedback2DArray[i][j];
    }
}

}

出于某种原因,这种"代码格式"不喜欢我的1/2代码,所以幸运的是,这是我所能处理的全部内容,但我很确定它有必要的东西。基本上,我已经为cout<lt;feedback_string[0];cout<lt;Feedback2DArray[0][0];

因为他们应该输出相同的东西,但事实并非如此。第一行输出的应该是"0",因为它所基于的计数器是(因为它们都是)0。但是,发送行输出"48"。有什么想法吗?

feedback_string很可能被声明如下:

char feedback_string[3];

换句话说,它是一个char的数组。这包含3个字符,它们都是'0',其十进制值为48(ASCII码)。当您执行以下任务时:

Feedback2DArray[fb_cur_row][fb_cur_col] = feedback_string[i];

您正在将char类型的对象转换为int类型的对象。这就是为什么您看到48被打印的原因,因为当您将int传递给cout时,它会打印出int对象所包含的值。传递char类型的对象时,它会打印出该值的字符表示。

现在,如果您的目标是将字符'0'转换为实际值0,您可以使用以下技巧,利用ASCII代码的排序方式:

Feedback2DArray[fb_cur_row][fb_cur_col] = feedback_string[i] - '0';

最新更新