>  기사  >  백엔드 개발  >  PHP 연산자 우선 순위에 대한 간단한 테스트 질문

PHP 연산자 우선 순위에 대한 간단한 테스트 질문

巴扎黑
巴扎黑원래의
2017-08-07 10:59:332099검색

오늘 그룹에서 누군가가 PHP 운영자의 우선 순위에 대해 질문을 했습니다. 저는 이전에 비슷한 문제에 직면한 적이 있습니다. 모두가 이해하고 문제가 발생하지 않도록 여기서 정리하겠습니다.)

다음과 같은 간단한 질문으로 시작해 보겠습니다.

$a = 3;

if ($a = 5) {
$a++;
}
var_dump($a);/ / (int)6
그래서 숫자에 대한 좋은 코딩 습관은 앞에 두고 5 == $a로 쓰는 것입니다. 이런 식으로 5 = $a라고 써도 오류가 보고됩니다. 이번에는 암묵적인 할당이 아닐 것입니다
자, 그럼 다음 피트를 살펴보겠습니다.
$x = 2;
echo $x == 2 ? 1 ? 'You' : 'it'; //You
$x가 실제로 2이기 때문에 여기 학생들은 결과가 나라고 생각할 수도 있습니다. 첫 번째는 true입니다.
여기서 알아야 할 점은 연산자 우선순위와 삼항 연산자의 왼쪽 연관입니다. 1 ? 'You' : 'It' //Because = = 삼항 연산자보다 우선순위가 높으므로 다음 코드로 변환됩니다
#echo true ? 'I' : false ? 'You' : 'it';
//왼쪽 결합 특성으로 인해 삼항 연산자 중 위 코드는
#echo (true ? 'I' : false) ? 'You' : 'it';
//먼저 왼쪽 괄호 안의
을 계산합니다. # echo '나' ? '너' : '그것'; //지금쯤이면 모두들 이해하실 겁니다
자, 계속해서 피트를 시청하세요
$a = 3;
$b = 5;
if ($a = 3 || $b = 7) {
$a++;
$b++;
}
var_dump($a );//(bool)true
var_dump($ b);//(int)6
많은 학생들이 면접 질문을 할 때 이런 질문을 접했을 것이라고 생각합니다. 저도 가끔 속았습니다.
속은 학생들은 아마도 여러 가지 답이 있을 것이라고 믿습니다 (4,6), (2,6)
$b는 기본적으로 논란의 여지가 없습니다. 핵심은 $a가 마법 같은 상황이라는 것입니다. 설명해 보겠습니다. 이 구덩이.
#과제에 대해서는 할말이 없습니다
$a = 3;
$b = 5;
if ($a = 3 || $b = 7) {
​ $a++ ;
       $b++;
}
//지식 포인트 1: ||의 우선순위 비율 = 높음
//그래서 $a = 3 || $b = 7은 $a = (3 | | $b = 7)
//3 || $b = 7이므로 전체 표현식이 true이므로 true를 반환하고 $a에 할당합니다. 대괄호가 실행됩니다
//지식 포인트 2: 증가/감소 연산자는 부울 값에 영향을 주지 않습니다. NULL 값을 줄이는 것은 효과가 없지만 NULL을 증가시킨 결과는 1
//즉, $a는 여전히 true이고 1++ 이후 2가 아님을 의미합니다. $b는 여전히++
//그래서 결과는 예 $a입니다. true, $b는 자동 증가 후 6
입니다.

여기서 함정에 빠지는 학생들은 3이라고 생각할 것입니다. = 기호는 할당 == 비교 연산자라는 점에 유의하세요

위 내용은 PHP 연산자 우선 순위에 대한 간단한 테스트 질문의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.