c - 每当在 C 中调用函数 'main' 时,变量都未初始化

标签 c loops variables while-loop initialization

因此,我创建了这个基本循环来获取用户输入,用它进行一些计算,然后在循环中断后显示计算的总体平均值。问题在于我收到的警告。也许我在这里遗漏了一些东西,但我对此很陌生,所以我不知道问题是什么。第一个警告说:“每当调用函数‘main’时,都会使用未初始化的变量‘miles’。”第二个警告说:“变量‘加仑’在此处使用时可能未初始化。”该程序似乎工作正常,但我只是不知道如何修复警告。如有任何帮助,我们将不胜感激。

#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;
}

最佳答案

消息很清楚,并且很容易在您的程序中发现:

double gallons,miles;

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

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

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

注意:检查 scanf 的返回值是否确实读取了值。

顺便说一句,您可以养成初始化局部变量的习惯,例如使用双加仑 = 0.0, 英里 = 0.0; 而不是仅仅声明双加仑,英里;

关于c - 每当在 C 中调用函数 'main' 时,变量都未初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53911386/

相关文章:

javascript - 如何使用 Javascript 表单发送到特定电子邮件?

mysql - ID匹配时如何从另一个表中获取名称?

c - 函数 memcpy() 正在关闭程序

javascript - 使用 HTTP 请求关闭 for 循环

C fgetc sigsegv - 跳到行尾

java - 在java的for循环中++i真的比i++快吗?

javascript - 从数组(forEach)生成代码块(函数、变量)?

PHP怪异的数学

c - 具有指定初始化程序的 MSVC12 (VS2013) 中可能存在编译器错误

c - 错误 : cannot convert 'double*' to 'char*' for argument '1' to 'void swap(char*, char*, unsigned int)'