错误写法:
float fun(int n)
{
double sum =0,s;
for(int i = 1;i<=n;i++)
{
for(int j = 1,s = 0;j<=i;j++)
{
s+=j;
}
sum+=1/s;
}
return sum;
}
注意这行: for(int j = 1,s = 0;j<=i;j++)
表示的写法:int j=1,s=0, 表示定义并初始化了变量j 和s 这个s与 double sum =0,s; 中的s是两个变量。
这种写法跟我们平时定义两个同类型变量的写法是一个道理:
int i =0,j=0; //i和j都是int变量。
另外,
编译出现"name lookup of '变量名' changed
这是因为,在局部作用域嵌套了同名局部变量s
改正后写法:将j变量也在for循环外定义
float fun(int n)
{
double sum =0,s;
int j;
for(int i = 1;i<=n;i++)
{
for(j = 1,s = 0;j<=i;j++)
{
s+=j;
}
sum+=1/s;
}
return sum;
}