WithoutReturning

리턴해야할 값이 있는 함수가 리턴을 하지 않으면 이 에러가 발생합니다.

소스 1. 자연수 n을 입력받고 n!을 출력하는 소스 ()

다른 상황을 생각하지 않기 위해 소스 1에서 입력은 1 ≤ n ≤ 10이라고 가정합시다. 1을 입력하면 올바르게 1을 출력하지만, 2 이상의 값을 입력하면 Segmentation fault가 발생합니다.

컴파일 경고 메시지를 보면 다음과 같습니다.

Main.cc:7:18: warning: control reaches end of non-void function [-Wreturn-type]
    7 |         factorial(n-1) * n;
      |         ~~~~~~~~~^~~~~

리턴값을 하지 않았다는 점을 경고하고 있습니다. 올바르게 리턴을 하면 경고 메시지도 없어지고, 의도한 대로 n!을 구할 수 있습니다.

환경에 따라 소스 1은 정상적으로 실행이 될 수도 있고, 알 수 없는 값이 리턴되는 경우도 있습니다. BOJ에서는 이 경우 무조건 를 발생시키고 있습니다.

소스 2. 소스 1을 올바르게 동작하게 고친 소스