C 함수가 올바른 결과를 반환하지만 return 문이 제공되지 않는 이유는 무엇입니까?

그래 보이

그래서 n 번째 피보나치 수를 반환하는 함수를 작성했지만 실제로 결과를 반환하는 것을 잊었습니다. "컨트롤이 무효가 아닌 함수의 끝에 도달 함"경고를 받았지만 코드가 제대로 실행되고 올바른 결과를 반환했습니다. 왜 그런 겁니까? C는 "result"를 반환해야한다는 것을 어떻게 알 수 있습니까?

int fib (int n);

int main(int argc, char** argv) {
    printf("%d", fib(10));

}

int fib (int n){
   if (n == 1){
      return 1;
   }
   if (n == 0){
     return 0
   }
   fib(n-2) + fib(n-1)
}

이것을 돌려 주었다

55

나는 추가하려고 노력했다

 int j = n+1

함수의 마지막 줄로 이동 한 다음 실제로 256이 아닌 2를 반환했습니다. 이것은 버그입니까, 아니면 c가 이와 같은 것을 어떻게 읽습니까?

chqrlie

명령문 void없이 함수 의 끝에 도달 return하면 정의되지 않은 동작이 호출됩니다. 예상되는 결과를 얻는 것은 일반적으로 luck 이라고하는 정의되지 않은 동작의 한 형태입니다 . 그건 그렇고, 256당신이 기대했던 것일 수 있지만 정확 하지 않습니다 .

가능한 설명은 다음과 같습니다. 함수에 의해 계산되고 일반적으로 반환 값을 포함하는 레지스터에 저장된 마지막 값이 예상 결과입니다.

물론 당신은 이것에 의존하거나 기 대해서는 안됩니다.

이것은 컴파일러 경고 사용의 좋은 예입니다. 무시하지 마십시오. 항상 더 많은 컴파일러 경고를 켜고 코드를 수정하십시오. gcc -Wall -W또는 clang -Weverything많은 어리석은 실수를 발견하고 디버깅 시간을 절약 할 수 있습니다.

다음은 몇 가지 다른 문제입니다.

  • 당신은 포함하지 않습니다 <stdio.h>
  • 당신은 계산 unsigned long long하지만 아마도 더 작은 유형 만 반환합니다.int
  • 알고리즘은 피보나치 수가 아니라 2의 거듭 제곱을 계산합니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

이 코드가 올바른 결과를 반환하지 않는 이유는 무엇입니까?

분류에서Dev

내 indexOf 값이 올바른 결과를 반환하지 않는 이유는 무엇입니까?

분류에서Dev

OpenMP atomic and critical이 올바른 결과를 제공하지 않는 이유는 무엇입니까?

분류에서Dev

copy_to_user가 올바른 결과를 인쇄하지 않는 이유는 무엇입니까?

분류에서Dev

이 Firebase Function Promise가 올바른 오류를 반환하지 않는 이유는 무엇입니까?

분류에서Dev

내 함수가 올바른 값을 반환하지 않는 이유는 무엇입니까?

분류에서Dev

re.findall이 문자열과 일치하지만 결과를 올바르게 반환하지 않는 이유는 무엇입니까?

분류에서Dev

이 함수 반환이 Java에서 예상 결과를 반환하지 않는 이유는 무엇입니까?

분류에서Dev

내 비동기 함수가 결과를 반환하지 않는 이유는 무엇입니까?

분류에서Dev

"cgps -s"가 결과를 제공하지 않는 이유는 무엇입니까?

분류에서Dev

콘솔이 올바른 데이터를 반환하지만 브라우저는 반환하지 않는 이유는 무엇입니까?

분류에서Dev

이 IF, OR, AND 함수가 TRUE를 반환하지 않는 이유는 무엇입니까?

분류에서Dev

올바른 바이트 수를 할당하지 않고 malloc이 작동하는 이유는 무엇입니까?

분류에서Dev

gzip -c가 gzip과 다른 결과를 제공하는 이유는 무엇입니까?

분류에서Dev

한 코드가 firebase에서 올바른 키를 제공하고 다른 코드는 제공하지 않는 이유는 무엇입니까?

분류에서Dev

올바른 위치에 올바른 문자열을 추가하지 않는 이유는 무엇입니까?

분류에서Dev

이 두 개의 C # 스크립트가 다른 결과를 제공하는 이유는 무엇입니까?

분류에서Dev

CONVERT 함수가 결과를 반올림하는 이유는 무엇입니까?

분류에서Dev

루프가 누적되는 것과 다른 결과를 제공하는 이유는 무엇입니까?

분류에서Dev

Srand Seed가 결과를 바꾸지 않는 이유는 무엇입니까?

분류에서Dev

Oracle "NOT IN"이 올바른 결과를 반환하지 않습니까?

분류에서Dev

getservbyname이 올바른 포트 번호를 반환하지 않는 이유는 무엇입니까?

분류에서Dev

PHP가 올바른 배열 수를 표시하지 않는 이유는 무엇입니까?

분류에서Dev

이 코드가 올바른 출력을 제공하지 않는 이유는 무엇입니까?

분류에서Dev

내 간단한 Rails form_tag 검색 양식이 올바른 방법을 사용하여 결과를 제공하지 않는 이유는 무엇입니까?

분류에서Dev

입력이 올바른 문자열을 반환하지만 함수를 실행하지 않습니다.

분류에서Dev

'async'모듈을 사용하지 않을 때만 결과가 반환되는 이유는 무엇입니까?

분류에서Dev

find ()가 올바른 값을 반환하지 않는 이유는 무엇입니까?

분류에서Dev

이 함수가 정의되지 않은 이유를 반환하는 이유는 무엇입니까?

Related 관련 기사

  1. 1

    이 코드가 올바른 결과를 반환하지 않는 이유는 무엇입니까?

  2. 2

    내 indexOf 값이 올바른 결과를 반환하지 않는 이유는 무엇입니까?

  3. 3

    OpenMP atomic and critical이 올바른 결과를 제공하지 않는 이유는 무엇입니까?

  4. 4

    copy_to_user가 올바른 결과를 인쇄하지 않는 이유는 무엇입니까?

  5. 5

    이 Firebase Function Promise가 올바른 오류를 반환하지 않는 이유는 무엇입니까?

  6. 6

    내 함수가 올바른 값을 반환하지 않는 이유는 무엇입니까?

  7. 7

    re.findall이 문자열과 일치하지만 결과를 올바르게 반환하지 않는 이유는 무엇입니까?

  8. 8

    이 함수 반환이 Java에서 예상 결과를 반환하지 않는 이유는 무엇입니까?

  9. 9

    내 비동기 함수가 결과를 반환하지 않는 이유는 무엇입니까?

  10. 10

    "cgps -s"가 결과를 제공하지 않는 이유는 무엇입니까?

  11. 11

    콘솔이 올바른 데이터를 반환하지만 브라우저는 반환하지 않는 이유는 무엇입니까?

  12. 12

    이 IF, OR, AND 함수가 TRUE를 반환하지 않는 이유는 무엇입니까?

  13. 13

    올바른 바이트 수를 할당하지 않고 malloc이 작동하는 이유는 무엇입니까?

  14. 14

    gzip -c가 gzip과 다른 결과를 제공하는 이유는 무엇입니까?

  15. 15

    한 코드가 firebase에서 올바른 키를 제공하고 다른 코드는 제공하지 않는 이유는 무엇입니까?

  16. 16

    올바른 위치에 올바른 문자열을 추가하지 않는 이유는 무엇입니까?

  17. 17

    이 두 개의 C # 스크립트가 다른 결과를 제공하는 이유는 무엇입니까?

  18. 18

    CONVERT 함수가 결과를 반올림하는 이유는 무엇입니까?

  19. 19

    루프가 누적되는 것과 다른 결과를 제공하는 이유는 무엇입니까?

  20. 20

    Srand Seed가 결과를 바꾸지 않는 이유는 무엇입니까?

  21. 21

    Oracle "NOT IN"이 올바른 결과를 반환하지 않습니까?

  22. 22

    getservbyname이 올바른 포트 번호를 반환하지 않는 이유는 무엇입니까?

  23. 23

    PHP가 올바른 배열 수를 표시하지 않는 이유는 무엇입니까?

  24. 24

    이 코드가 올바른 출력을 제공하지 않는 이유는 무엇입니까?

  25. 25

    내 간단한 Rails form_tag 검색 양식이 올바른 방법을 사용하여 결과를 제공하지 않는 이유는 무엇입니까?

  26. 26

    입력이 올바른 문자열을 반환하지만 함수를 실행하지 않습니다.

  27. 27

    'async'모듈을 사용하지 않을 때만 결과가 반환되는 이유는 무엇입니까?

  28. 28

    find ()가 올바른 값을 반환하지 않는 이유는 무엇입니까?

  29. 29

    이 함수가 정의되지 않은 이유를 반환하는 이유는 무엇입니까?

뜨겁다태그

보관