Я новичок в кодировании и на этих форумах, поэтому, пожалуйста, будьте терпеливы, если я испортил.
В любом случае, я создаю 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". Любые идеи почему?
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';