C &引用;未初始化的局部变量“;错误,尽管定义了变量?

C &引用;未初始化的局部变量“;错误,尽管定义了变量?,c,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); }

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

#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);
}
#包括
int main()
{
int n,和=0;i=0;
printf(“请输入一个要评估的数字\n”);
扫描频率(“%d”和“&n”);

对于(i=0;i请在
sum=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);  
是错误的。如果通过强制转换表示
双(和)
,则它不是有效语法。如果它类似于
(双)和
,则仍然是错误的,因为
=
需要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);
}
int n=1,i;
printf(“请输入一个要评估的数字\n”);
扫描频率(“%d”和“&n”);
双和=0.0;

对于(i=0;i请在
sum=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);  
是错误的。如果通过强制转换表示
双(和)
,则它不是有效语法。如果它类似于
(双)和
,则仍然是错误的,因为
=
需要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);
}
int n=1,i;
printf(“请输入一个要评估的数字\n”);
扫描频率(“%d”和“&n”);
双和=0.0;

对于(i=0;i如果扫描失败会发生什么?您需要初始化
n

如果扫描失败会发生什么?您需要初始化
n

对不起,我实际上有int n,sum=0,i=0;它仍然给我带来问题。“运行时检查失败#3-变量'sum'未经初始化就被使用”如果您发现它有帮助,请不要忘记:)对不起,我实际上有int n,sum=0,I=0;它仍然给我带来问题。“运行时检查失败#3-变量‘sum’未初始化就被使用”如果您发现它有帮助,请不要忘记:)在得到答案后,不要编辑问题。这会误导用户……以及未来的其他潜在观众future@EdHeal;哦,是的,当然。在得到答案后,不要编辑问题。这会误导用户……以及未来的其他潜在观众future@EdHeal当然可以。