0
所以,我已经写了应该返回第n个Fibonnacci数的函数,但我忘了居然回我的结果。我确实得到了“控制到达非空函数的结束”警告,但代码执行得很好并返回了正确的结果。这是为什么? C如何知道它应该返回“结果”?C函数返回正确的结果,但没有给出返回语句,为什么?
int fib (int n);
int main(int argc, char** argv) {
printf("%d", fib(10));
}
int fib (int n){
unsigned long long result = 1;
unsigned long long aux = 0;
while (n > 1){
result += aux;
aux = result;
n--;
}
}
它返回此
256
我试图
int j = n+1
添加到函数的最后一行,然后将它实际返回2,而不是256.这是一个bug,或者c如何读取这样的内容?
未定义行为是不确定的行为。其中一种可能性是它似乎可以工作。 –
顺便说一句,它*不*工作。如果'fib'函数应该返回第n个斐波那契数,那么得到的结果实际上是错误的,它应该是'55'。 –
哎呀,你是对的!但是,这是我的算法是错误的,我的意思是“作品”是它编译并返回结果变量的最终值。 – yeahboy