【发布时间】:2017-01-19 01:36:24
【问题描述】:
我正在研究一个简单的函数,给定输入 n,返回 n 个斐波那契数。
int main(){
int n = 0;
int counter = 1;
int f1, f2, f3 = 1;
printf("Insert an integer bigger than 0:\n");
scanf("%i", &n);
printf("%i", f1);
while(counter <= n){
f3 = f1 + f2;
printf("%i\n", f3);
f1 = f2;
f2 = f3;
counter = counter + 1;
}
return 0;
}
令人惊讶的是,每次我运行程序时,该函数都会返回不同的结果。此外,这些数字远大于/小于任何可能的结果。
很可能,我遗漏了一些明显的东西,但我无法解释这种行为。
【问题讨论】:
-
printf("%i", f1);你认为f1在那个阶段的价值应该是多少? -
int f1,f2,f3=1 ====> f1 和 f2 初始化了吗?
-
不应该是1吗?
-
@Worice 也许它应该是,但它不是。如果 C 是这样工作的,可以说 C 会是一种稍微容易一些的语言,但你必须处理它实际存在的语言。无论如何,您总是可以简单地在一行中声明它们未初始化,然后在下一行中写上
f1 = f2 = f3 = 1;。 -
@JohnColeman 你是对的,我会记住的。我不认为随机数可能是未分配变量的结果。