부작용이 없는 무한 루프는 C 11 표준에서 명시적으로 정의되지 않은 동작(UB)으로 간주됩니다. 다음 프로그램을 고려해보세요.
<code class="cpp">int main() { while (true) {} }</code>
이 프로그램은 의미 있는 작업을 수행하지 않고 무한정 계속 실행될 수 있기 때문에 UB입니다.
지금 , 재귀 프로그램을 고려해 보겠습니다.
<code class="cpp">void foo() { foo(); } int main() { foo(); }</code>
이 프로그램도 UB인가요?
표준에 따르면(1.10p24):
구현에서는 모든 스레드가 결국 다음 중 하나를 수행한다고 가정할 수 있습니다.
- 종료
- 라이브러리 I/O 함수 호출
- 휘발성 개체에 액세스하거나 수정하거나
- 동기화 작업이나 원자적 작업을 수행합니다.
이는 무한 루프와 재귀 모두에 적용됩니다.
이에도 불구하고 중첩된 재귀 함수 호출의 구현 제한을 초과하는 경우 재귀는 여전히 정의되지 않은 동작을 초래할 수 있습니다. 항상 그래왔습니다.
위 내용은 다음은 질문 구조와 기사의 초점을 염두에 두고 몇 가지 제목 옵션입니다. **옵션 1(직접 및 집중):** * **C의 재귀는 정의되지 않은 동작인가요?** **옵션 2(강조의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!