#include
float sum(float *,unsigned);
int main(int argc, char *argv[])
{
float a[5]={1,2,3,4,5};
float t=sum(a,0);
printf("t=%f\n",t);
return 0;
}
float sum(float a[],unsigned length)
{
int i;
float sum=0;
for(i=0;i<length-1;i++)
{
sum+=a[i];
}
return sum;
不知道为什么会报错
求指点
t=0.000000
#include <stdio.h>
float sum(float *,unsigned);
int main(int argc, char *argv[])
{
float a[5]={1,2,3,4,5};
float t=sum(a,0);
printf("t=%f\n",t);
return 0;
}
float sum(float a[],unsigned int length)
{
int i;
float sum=0;
for(i=0;i<(int)length-1;i++)
{
sum+=a[i];
}
return sum;
}
强制转换下就可以了,不同类型编译器给出警告。
对unsigned int作减法要特别小心,如果length是0,会下溢。
这里根本没必要减1,因为你用的是小于。
这是正确结果,15
将 unsigned int length改成int length也可以。
应该是会有个警告吧?错误是运行时候才出现的,unsigned类型的0-1是-1,当然错了