другие числа выводятся из массива, чем ввод с использованием рекурсивной функции?

0

Я нахожусь в середине создания рекурсивной функции массива, которая подсчитывает числа и добавляет их вместе, возвращая их в рекурсивную функцию. Функция, похоже, действительно работает, но число, которое я первоначально вводил в массив, было 1,2,3,4,5, но программа сообщает мне, что эти числа - 49, 50, 51, 52, 53... Очень смутно, почему это может произойти, любая помощь или понимание будут оценены с большой благодарностью. Спасибо!

#include <iostream>
using namespace std;

const int SIZE = 5;//size of array
int sum(int [], int);//recursive function

int main()
{
    int sumArray[SIZE] = { '1', '2', '3', '4', '5'};//array with predetermined values

    cout << sumArray[0] << endl;//49
    cout << sumArray[1] << endl;//50
    cout << sumArray[2] << endl;//51
    cout << sumArray[3] << endl;//52
    cout << sumArray[4] << endl;//53

    cout << sum(sumArray, SIZE) << endl;//displays the amount 255 (5 elements added)

    system("pause");
    return 0;
}

int sum(int sumArray[], int size)
{
    if (size == 1)
        return sumArray[size - 1];
    else
    {
        cout << size << endl;
        return sumArray[size - 1] + sum(sumArray, size - 1);
    }
}
Теги:
arrays
function
recursion

1 ответ

2

Вы фактически помещены в массив ASCII-кодов чисел: '1' на самом деле является символом с кодом 49, который преобразуется в int 49. Напишите следующее:

int sumArray[SIZE] = { 1, 2, 3, 4, 5 };

Это называется неявным преобразованием - посмотрите раздел "Интегральное продвижение".

  • 0
    Спасибо за помощь :)

Ещё вопросы

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