2D Array: запись неоднозначных '48' после записи в него

0

Я новичок в кодировании и на этих форумах, поэтому, пожалуйста, будьте терпеливы, если я испортил.

В любом случае, я создаю 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 << feedback_string [0]; cout << Feedback2DArray [0] [0];

Поскольку они должны выводить одно и то же, но это не так. Первая строка выводит то, что должно быть "0", поскольку счетчик, на котором он основан, равен (как и все они) 0. Однако линия отправки выводит "48". Любые идеи почему?

Теги:
arrays

1 ответ

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';
  • 0
    Большое спасибо за быстрый ответ, я не ожидал так скоро. К сожалению, у меня есть университет до 1 (по Гринвичу), но после этого я взволнован, чтобы попробовать. Если это работает, я <3 вас: P

Ещё вопросы

Сообщество Overcoder
Наверх
Меню