Преобразование массива чисел и массив символов
Только учу программирование. Написала код, он работает, но я не могу понять, зачем для того, чтоб перевести int arr в char надо писать только так:
number [i] = '0' + arr[i];
P.s const int arr [10]; char number [10];
Просто number [i] = arr[i]; не работает. Что это за '0' + и для чего он нужен?
Ответы (1 шт):
1. Почему нельзя написать number [i] = arr[i]? Потому что number[i] имеет тип данных char, а arr[i] - тип int. Они по-разному хранятся в памяти компьютера, занимают разное число байт. Поэтому для начала необходимо привести один тип данных к другому.
2. Что это за '0' + и для чего он нужен? В данном случае вам необходимо уметь из числа 0 делать символ '0', из числа 1 делать символ '1'? ..., из числа 9 делать символ '9'. Это можно сделать различными способами. Один из них - воспользоваться тем, что у каждого символа есть свой код. Так, например, символ '0' имеет код 30, а символ '9' имеет код 39. Можно заметить, что символы цифр в таблице идут подряд - так же как и сами цифры. Этим можно воспользоваться и сказать, что симол '5' имеет код на 5 больше, чем у символа '0'. Таким образом, получаем формулу для цифр от 0 до 9: 'n' = '0' + n. А если вернуться к вашему примеру, то это как раз number[i] = '0' + arr[i].