Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C와 C++에서 정의되지 않은, 지정되지 않은 및 구현 정의 동작의 차이점은 무엇입니까?

<시간/> <본문>

정의되지 않은 동작은 단순히 C++ 사양에서 정의되지 않은 동작입니다. 예를 들어, i++ + ++i와 같은 표현식에 단항 증가/감소 연산이 여러 개 있는 경우 정의되지 않은 동작이 발생합니다. 이것은 단순히 일부 언어 구성이 구문적으로 유효하지만 코드가 실행될 때 동작을 예측할 수 없다는 사실 때문입니다. 또 다른 예는 다음 표현식입니다. u =(u++);

구현 정의 동작은 사양에 의해 지정되지 않은 동작이며 구현자가 선택 방법을 결정하고 문서화하도록 남겨둡니다. 이 경우 그 선택은 보장되어야 합니다. 즉, 그렇게 되어야만 합니다.

지정되지 않은 동작의 경우 C++ 표준은 여러 가능한 경로를 제공하므로 문서화하거나 보장하기 위한 구현이 필요하지 않습니다.