“未初始化的局部变量”错误,尽管定义变量?

时间:2014-01-02 19:47:07

标签: c

这是代码。它表示变量未初始化,尽管在主函数之后将其定义在代码的顶部。

#include<stdio.h>
int main()
{
    int n, sum=0; i=0;
    printf("Please enter a number to evaluate\n");
    scanf_s("%d",&n);

    for(i=0; i<=n; i++)
    {
        double(sum) = sum + double(1/n);
    }

    sum = (int)sum;

    if(sum == 1)
    {
        printf("Adding %d 1/%d's gives a result of 1\n",n,n);
    }
    if(sum <= 1)
    {
        printf("Adding %d 1/%d's gives a result less than 1\n",n,n);
    }
    if(sum >= 1)
    {
        printf("Adding %d 1/%d's gives a result greater than 1\n",n,n);
    }
return(0);
}

2 个答案:

答案 0 :(得分:10)

sum=0;之后删除分号并更改

int n, sum=0; i=0;  

int n, sum=0, i=0;  

或将int n, sum=0; i=0;更改为

int n, sum=0; int i=0;    

旁注:

声明

double(sum) = sum + double(1/n);  

错了。如果您的意思是double(sum),那么它就不是一种有效的语法。如果它像(double)sum那样仍然是错误的,因为=要求l值作为其左操作数。
我建议您将sum声明为double并将其重写为

int n = 1, i;
printf("Please enter a number to evaluate\n");
scanf_s("%d",&n);
double sum = 0.0;
for(i=0; i<=n; i++)
{
    sum = sum + (1.0/n);
}

答案 1 :(得分:3)

如果scanf_s失败会怎么样?您需要初始化n