我正在制作一个递归数组函数,该函数对数字进行计数并将它们加在一起,以递归函数的形式返回它们。该函数似乎确实有效,但是我最初输入数组的数字是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);
    }
}

最佳答案

实际上,您将数字放入了ASCII码数组中:“ 1”实际上是一个带有代码49的字符,该字符被转换为int49。编写如下:

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


这称为implicit conversion-查看“整体推广”部分。

10-08 04:16