2016-11-19 1 views
1

나는 "return o"를 사용하지 않으면 어떻게 될지보고자했습니다. 그래서 프로그램 끝에서 "return 0"을 사용하지 않을 때마다 "return 0"을 사용하지 않으면 "Process returned 18 (0 * 12)"이 표시됩니다."return 0"을 사용하지 않으면 왜 "Process returned 18 (0 * 12)"가 표시됩니까?

왜?

미리 감사드립니다.

+1

이 동작을 나타내는 최소한의 전체 프로그램과 실행 방법에 대한 세부 정보를 게시 할 수 있습니까? (그 질문은 다른 독자들에게 더 유용 할 것입니다.) – ruakh

+0

그걸 찾으십시오, 그게 한 달 전에 방금 기억났습니다. – Felix

+2

아시다시피,'main()'은 성공을 위해 값 0을 반환해야합니다. 명시 적으로 값을 반환하지 않으면 시스템에서 반환 값으로 사용하는 레지스터 또는 메모리 위치에 발생한 값에 따라 임의의 가비지 반환 값의 결과를 얻습니다. 그러나 상황에 따라 "무작위, 가비지"값이 항상 동일하다는 것이 일반적입니다. (* "* 0 * 12"의 의미는 모르겠다.) –

답변

4

void가 아닌 함수에서 return 문을 생략하면 정의되지 않은 동작이 호출됩니다. 무엇이든이 발생할 수 있습니다.

+0

예, 그렇습니다.하지만 구체적으로 "Process returned 18 (0 * 12)".. – Felix

+0

을 사용하고 테스트 사례 번호를 사용/입력하면 반환 유형이 테스트 사례 번호를 표시합니다 (생략 된 경우). – Felix

+1

@Felix : 정의되지 않은 영역에 들어갈 때 정확히 무슨 일이 일어나는지 알아 내려고 노력하는 것은 그리 생산성 적이지 않습니다. 어떤 대답을 찾았 든 (이 경우 레지스터 나 스택에있는 다른 데이터가 반환 값으로 사용되는 경우가 대부분입니다) 모든 종류의 요소와 신뢰할 수있는 데이터에 매우 민감합니다. – Thilo

관련 문제