每当在C中调用函数“ main”时,变量均未初始化

时间:2018-12-24 09:13:21

标签: c loops variables while-loop initialization

因此,我进行了这个基本循环以接受用户输入,并使用它进行一些计算,然后在循环中断后显示计算的总体平均值。问题是我收到警告。也许我在这里错过了一些东西,但是我对此并不陌生,所以我不知道问题出在哪里。第一个警告说:“每当调用函数“ main”时,变量“ miles”都将未初始化使用。”第二条警告说:“在此处使用时,变量'gallons'可能未初始化。”该程序似乎工作正常,但我只是不知道如何解决警告。任何帮助表示赞赏。

#include <stdio.h> //library header 
int main() { //declare main function    
    double gallons,miles;
    double sum=0;
    int count=0;

    while (miles>=0||gallons>=0) {
        sum+=(miles/gallons);
        count++;

        printf("\nEnter the gallons used (-1 to end): ");
        scanf("%lf",&gallons);

        if (gallons<0)
        break;

        printf("Enter the miles driven: ");
        scanf("%lf",&miles);

        if (miles<0)
        break;

        printf("The miles/gallon for this tank was: %lf", miles/gallons);
    }

    if (count>0) {
        printf("The average is: %lf", sum/(count-1));
    }

    return 0;
}

1 个答案:

答案 0 :(得分:1)

该消息很清楚,很容易在程序中发现:

double gallons,miles;

while (miles>=0||gallons>=0) {

miles在函数中声明, automatic variable 也是如此。自动变量未初始化(因此具有garbage values)。现在,在第一个可执行语句中,您可以比较里程。但是英里仍未初始化。也许将以下几行复制到while之前?加仑也是一样。

    printf("Enter the miles driven: ");
    scanf("%lf",&miles);

注意:如果确实读取了一个值,请检查scanf的返回值。

顺便说一句,您可以养成初始化局部变量的习惯,例如与double gallons = 0.0, miles = 0.0;一起使用,而不仅仅是声明double gallons,miles;