首页 > 解决方案 > 函数在每次执行中返回不同的值

问题描述

我在编码方面有点新,我遇到了一个逻辑错误。目标是创建一个函数来测试该数字是否可以从 2 到 10 整除。但是,正如我所测试的,userInput 变量返回正确的值,但函数的值在每次执行时都会改变。这是代码:

#include <stdio.h>

int testDivisible(int a) {
    int checker; // checker is intended for counting divisible numbers between 2-10; if returned > 0, then not divisible

    for (int i=2; i<=10; i++) {
        if (a % i == 0) {
            checker = checker + 1;
        }
    }

    return checker;
}

int main() {
    int userInput;

    printf("Enter number: ");
    scanf("%d", &userInput);
    int x = testDivisible(userInput);

    if (x > 0) {
        printf("Is divisible by 1 to 10\n");
    }
    else {
        printf("Is not divisible by 1 to 10\n");
    }

    printf("%d\n", userInput); // intended for testing
    printf("%d", x); // intended for testing
}

但是,当我编译并运行代码时,结果是:

执行1:

Enter number: 17
Is divisible by 1 to 10
17
847434400

执行2:

Enter number: 17
Is not divisible by 1 to 10
17
-1002102112

标签: cinitialization

解决方案


在您的代码中,

 int checker; 

是一个自动局部变量,没有显式初始化。因此,它包含在indeterminate中的初始值。

您必须将值初始化为0


推荐阅读