연산자 우선순위와 평가 순서의 관계는 무엇인가요?
일반적인 이해와는 달리 연산자 우선순위는 평가 순서를 완전히 결정하지 않습니다. 프로그래밍 평가. 우선순위가 값 계산 순서를 결정하지만 피연산자 자체의 평가는 우선순위와 무관합니다.
예:
x < y < 지. 우선순위 규칙에 따라 (x < y) < 지. 그러나 예를 들어 스택 머신은 다음과 같이 표현식을 평가할 수 있습니다.
push(z); push(y); push(x); test_less(); // compares TOS to TOS(1), pushes result on stack test_less(); // compares TOS to TOS(1), pushes result on stack
이것은 x 또는 y보다 먼저 z를 평가하지만 여전히 (x < y)를 평가하고 결과를 z와 비교합니다.
평가 및 부작용:
부작용 등 변수를 증가시키거나 감소시키는 것은 개념적으로 별도의 스레드에 의해 실행됩니다. 이 스레드는 다음 시퀀스 지점에서 조인됩니다. a = b c;라는 표현을 생각해 보세요. 다음과 같이 실행될 수 있습니다.
push(a); push(b); push(c+1); side_effects_thread.queue(inc, b); side_effects_thread.queue(inc, c); add(); assign(); join(side_effects_thread);
여기서 a는 할당 대상임에도 불구하고 b나 c보다 먼저 평가됩니다. 다음 시퀀스 포인트 이전에 표현식의 다른 부분에서 변수를 사용하려고 하면 정의되지 않은 동작이 발생합니다.
위 내용은 연산자 우선 순위는 프로그래밍 평가 순서와 어떻게 다릅니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!