#c
#c
Вопрос:
Это функция, которая, похоже, не работает, вероятно, какой-то синтаксис, который я ошибся в отношении создания массива. В нем также говорится что-то о том, что читаемые байты равны 8, но 12 могут быть прочитаны.
int sum = 0;
std::string total;
std::string space = " ";
cout << "Enter numbers:n";
int array[2] = { 0, 0 };
int i;
for (i = 0; i < sizeof(array); i ) {
std::cin >> array[i];
int size = 0;
for (int z = 0; z < 0; z ) {
array[i] /= 10;
size ;
}
for (int b = 0; b < size; b ) {
int multiplication = 0;
multiplication = array[i] % 10;
multiplication *= size;
sum = multiplication;
array[i] /= 10;
}
total = std::to_string(sum);
total.append(space);
}
std::cout << total;
Комментарии:
1. не могли бы вы опубликовать сообщение об ошибке
2.
sizeof(array)
возвращает 8, которое вам нужноsizeof(array) / sizeof(*array)
= 23. Используйте циклы for на основе диапазона. Они предоставляют отличный способ избежать этой проблемы:
for (i = 0; i < sizeof(array); i ) { std::cin >> array[i]; ...
становитсяfor(intamp; v : array) { std::cin >> v; ...
Ответ №1:
Вы можете использовать std::size(array)
начиная с C 17. Это возвращает N, количество элементов в массиве C , объявленном как T array[N]
. Чтобы получить std::size
, вам нужно включить файл заголовка любого стандартного контейнера C , например #include <array>
. См. std::size
Ответ №2:
sizeof
Оператор возвращает размер в байтах своего аргумента. Если вам нужен размер в элементах массива, вы также должны разделить на размер типа данных:
Размер массива в элементах arr
T
sizeof arr/sizeof(T)
равен.
Поддержка C 17 и более поздних std::size
версий, которая возвращает размер массива в элементах.