시퀀스 포인트는 무엇입니까?

컴퓨터 프로그래밍의 시퀀스 포인트는 변수의 값이 완전히 계산 된 경우 프로그램 실행 중에 발생하는 순간이며, 이전 작업의 변경이없고 미래의 표현식에서 아직 수행되지 않은 계산이 없습니다. 함수 내부의 코드 실행 전, "for"및 "if"와 같은 진술의 제어 표현식 끝에 및 C 코드의 간단한 표현과 같은 완전한 표현의 끝에 시퀀스 포인트가 C 언어 표준에 주로 정의 된 여러 장소가 있습니다. 시퀀스 포인트를 정의하는 몇 가지 이유는 모호한 상황을 피하거나 정의되지 않은 동작을 초래하거나 컴파일러를 혼동하고 예측할 수없는 코드를 생성 할 수 있기 때문입니다. 대부분의 경우 프로그래머는 시퀀스 지점에 대해 명시 적으로 걱정하지 않지만, 컴파일러를 작성할 때 코드가 올바르게 실행되도록하는 개념이 매우 중요합니다.

시퀀스 POI의 예.C 프로그래밍 언어의 nt는 문에 a = a + b;. 이 표현에서, 세미콜론은 서열 지점이다. 표현이 완료되면 A의 값이 평가되고 다음 표현이 시작될 때까지 잔류 계산은 수행되지 않습니다. 동일한 부호는 시퀀스 지점이 아닙니다. A의 값은 표현식 전체에 따라 컴파일러에 의해 수정 될 수 있기 때문입니다.

시퀀스 지점의 주요 규칙은 값의 변화를 계산하는 것 외에 다른 목적으로 지점 사이에 변수가 두 번 이상 액세스되지 않는다는 것입니다. 이 규칙의 위반은 배열에 값을 할당 할 때 가장 잘 표현됩니다. 변수 a와 i라는 배열이 있으면 문법적으로 c에서 표현 i [a] = a ++를 쓸 수 있습니다. 여기서, 변수는 현재 값을 평가하는 것 외에 다른 목적으로 두 번 이상 액세스됩니다. 즉, 그것은 a로 사용됩니다n 배열 I의 색인은 컴파일러가 인덱스로 사용되기 전에 또는 사용 된 후에 A를 증가시킬 수 있음을 의미합니다. 프로그램에서 의존 할 수없는 예측할 수없는 동작을 생성합니다.

시퀀스 포인트는 기본적으로 진술이 컴파일러에 의해 일관되게 평가되고 실행될 수 있고 실행되도록하는 방법으로 볼 수 있습니다. 또한 정의 된 동작을 예측할 수 있기 때문에 컴파일러는 최적화 전략을 사용할 수 있습니다. C 언어 표준 내에, 시퀀스 포인트의 세 가지 주요 인스턴스, 즉 함수가 실행을 시작할 때, 논리 연산자와 쉼표의 지점에서, 그리고 대부분의 C 문장과 같이 세미콜론으로 끝나는 완전한 표현식의 끝에.

가 있습니다.

다른 언어

이 문서가 도움이 되었나요? 피드백 감사드립니다 피드백 감사드립니다

어떻게 도와 드릴까요? 어떻게 도와 드릴까요?