c - 函数在每次执行中返回不同的值
问题描述
我在编码方面有点新,我遇到了一个逻辑错误。目标是创建一个函数来测试该数字是否可以从 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
解决方案
在您的代码中,
int checker;
是一个自动局部变量,没有显式初始化。因此,它包含在indeterminate中的初始值。
您必须将值初始化为0
。
推荐阅读
- python - 对象没有被完全删除
- r - 使用基于 ID 的 tidyverse 将行合并为一个
- javascript - 在 Ajax 中分离数据列表
- curl - 将 AWS cpp sdk 用于 Google 云时出现 Curl 超时
- javascript - 全局正则表达式和数组
- opencv - VLC 可以连接 rtsp,但是 openCV 和 ffmpeg
- javascript - 传递给组件的对象变为空
- visual-studio - Visual Studio(不是 VS Code)可以进行远程 ssh 开发吗?文档说是的,但是
- linux - 如何在 bash 中解析这个 yaml 文件以获取特定值?
- react-native - 如何在 React Native Vector Icon 中选择同名的图标