2010-07-07 5 views
3

(void가 아닌) 함수를 호출했지만 반환 값을 변수에 할당하지 않으면 어떻게됩니까? 예 : getchar();함수 반환 값이 변수에 지정되지 않았습니다.

저는 언제나 그런 가치에 어떤 일이 일어 났는지 궁금합니다. 나는 "에테르가 사라진 것"과 같은 유머러스 한 설명을 들었다. 그러나 나는 정말로 알고 싶어한다. 그런 가치를 되 찾을 수있는 방법이 있을까요? 감사합니다.

+0

어떤 언어로를? – SLaks

답변

4

아니요, 그렇지 않습니다.

값이 스택에서 팝되어 사라졌습니다.

반환 값이 필요한 경우 변수에 할당해야합니다.

+0

대부분의 호출 규칙은 반환 값에 대해 레지스터를 사용합니다. 그래서 아무 것도 스택에 나타나지 않습니다. –

0

단순히 '반환'(암시 적으로 반환 자체를 호출하거나 전혀 반환하지 않음)이며 값을 할당하지 않으면 값이 지정되지 않으므로 null입니다.

3

이것은 실제로 컴파일러/CPU와 관련이 있지만, 대부분의 경우 반환 값은 CPU 레지스터에 있습니다 (적합 할 경우). 그러면 해당 레지스터가 후속 코드에서 처리되지 않으면 예를 들어를 사용하여 검색 할 수 있습니다. "인라인 어셈블러".

귀하의 질문에 더 잘 답하기 위해 아무런 가치가 없습니다. 스택 위치 또는 레지스터 내부에 위치합니다. 당신이 그것을 사용한다면, 괜 찮 아 ... 그렇지 않다면 아무 일도 일어나지 않습니다. 결국 스택이나 레지스터는 ... 새 값을 덮어 씁니다

관련 문제