- 论坛徽章:
- 0
|
#include <stdio.h>
double CalcSum(int a[], int n);
int main(void)
{
int a[] = {2147483647, 2147483647, 2147483647};
double sum = CalcSum(a, sizeof(a) / sizeof(a[0]));
fprintf(stdout, "sum = %.0lf\n", sum);
return 1;
}
double CalcSum(int a[], int n)
{
if (n <= 0)
{
return 0;
}
else
{
return double(a[n-1]) + CalcSum(a, n-1);
}
}
程序执行结果为:
sum = 6442450941
这个没有问题!
如果把double CalcSum(int a[], int n)改为如下,程序执行结果依然正确!为什么没有发生越界呢?
double CalcSum(int a[], int n)
{
if (n <= 0)
{
return 0;
}
else
{
return a[n-1] + CalcSum(a, n-1);
}
} |
|