2D数组:写入后记录模糊的'48'

时间:2013-11-29 03:12:46

标签: c++ arrays

我对编码和这些论坛很陌生,所以如果我陷入困境,请耐心等待。

无论如何,我正在创建一个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;&lt; [0] feedback_string;     cout&lt;&lt; Feedback2DArray [0] [0];

因为他们应该输出相同的东西,但他们不是。第一行输出它应该为'0'的值,因为它所基于的计数器是(因为它们都是)0。然而,发送线输出'48'。有什么想法吗?

1 个答案:

答案 0 :(得分:2)

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';