Итак, я написал функцию, которая должна вернуть n-й номер Фибоначчи, но я забыл фактически вернуть свой результат. Я получил предупреждение «контроль до конца не-пустоты», но код выполнил штраф и вернул правильный результат. Почему это? Как 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. Это ошибка, или как c читает что-то вроде этого?
Неопределенное поведение - неопределенное поведение. Одна из возможностей заключается в том, что * кажется * работать. –
И, кстати, он * не работает. Если функция 'fib' должна возвращать n: th число Фибоначчи, то результат, который вы получите, фактически неверен, это должно быть' 55'. –
кричит, что вы правы! Но мой алгоритм ошибочен, то, что я имел в виду с «работами», заключается в том, что он компилирует и возвращает окончательное значение переменной результата. – yeahboy