>  Q&A  >  본문

PHP의 논리 연산자 및 할당 연산자 우선 순위.

<p>최근에 다음과 같은 구절에서 그 내용을 발견했습니다. </p> <pre class="brush:php;toolbar:false;">$x = 2 && $y = 3; echo (int)$x.':'.(int)$y;</ 사전> <p>이 코드 조각은 1:3 출력을 생성합니다. 연산자 우선순위 테이블을 살펴보면 논리 연산자 || 및 &&&가 할당 연산자 =보다 우선순위가 높다는 것을 알 수 있습니다. 따라서 첫 번째 표현식은 $x = ($y || 2) = 3;으로 처리되어 $x = (2 && $y) = 3이 되고 최종적으로 $x = false = 3; . 둘째, 할당 연산자는 올바른 순서를 가지므로 인터프리터는 false = 3을 시도해야 하며 이는 명백히 불법입니다. 따라서 내 생각에는 위에서 언급한 코드 조각은 컴파일에 실패하고 구문 분석 또는 런타임 오류가 발생해야 합니다. 하지만 대신에 이 스니펫은 1:3을 생성했습니다. 즉, 통역사가 수행하는 작업은 다음과 같습니다. </p> <인용문> <p>a) $y=3</p> <p>b) 2 &&$y</p> <p>c) $x = (2 && $y)</p> </인용문> <p>연산자 우선순위를 기반으로 하는 대신 왜 이 작업을 수행합니까?</p>
P粉176980522P粉176980522411일 전491

모든 응답(1)나는 대답할 것이다

  • P粉615829742

    P粉6158297422023-08-08 00:02:37

    귀하가 제공한 연산자 우선순위 테이블은 별도의 주석으로 명시되어 있습니다.

    따라서 실제로 표현식 내의 할당은 하위 표현식으로 처리됩니다. 이 작업이 수행되는 방법과 시기는 문서에 명확하게 명시되어 있지 않으며 단순히 "유사한" 표현이 이러한 방식으로 작동한다고 명시되어 있습니다.

    회신하다
    0
  • 취소회신하다