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>