PHP의 논리 연산자 및 할당 연산자 우선 순위.
P粉176980522
P粉176980522 2023-08-07 11:55:52
0
1
450

최근에 다음과 같은 구절에서 그 내용을 발견했습니다.

$x = 2 && $y = 3; echo (int)$x.':'.(int)$y; 

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

<인용문>

a) $y=3

b) 2 &&$y

c) $x = (2 && $y)

연산자 우선순위를 기반으로 하는 대신 왜 이 작업을 수행합니까?

P粉176980522
P粉176980522

모든 응답 (1)
P粉615829742

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

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

    최신 다운로드
    더>
    웹 효과
    웹사이트 소스 코드
    웹사이트 자료
    프론트엔드 템플릿
    회사 소개 부인 성명 Sitemap
    PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!