>  기사  >  백엔드 개발  >  $i++ 및 ++$i에 대한 PHP 분석

$i++ 및 ++$i에 대한 PHP 분석

巴扎黑
巴扎黑원래의
2016-11-21 15:10:591423검색

이 기사에서는 VLD 도구를 사용하여 php의 opcode를 분석하여 이유를 설명합니다.

T1.php 코드

$i = 1;

$i+$i++ 🎜>

라인 # * op ----------- -------------

2 0 > 할당 ~                                  무료 ~                                            >경로 #1: 0,

T2.php 코드

$i = 1;

$i+$i+$i++

Vld2 코드

ops 수: 6

컴파일된 변수: !0 = $i

line # * op fetch ext return 피연산자

------ ----------------------------- -------- -------------------------

2 0 & gt;

2 post_inc ~ 2! 0

3 추가 ~ 3 ~ 1, ~ 2

4 무료 ~ 3

4 5 & gt;

분기: # 0; 줄: 2- 4; sop: 0; eop: 5

경로 #1: 0,

비교 두 장의 사진 2와 4를 보면 왜 결과가 놀라운지 알 수 있습니다

먼저 1과 2의 실행 결과를 분석합니다

먼저 $i에 값이 1이면 $i++가 스스로 증가하고 결과 1이 임시 변수 ~1($i)에 복사된 다음 $i가 2로 증가합니다. 즉, 최종은 !0=2입니다. 결과 ~2 = ~1+!0 === 3;

3,4를 분석해 보겠습니다

먼저 $i에 1의 값이 할당되고 그 다음에는 $i+ $i = !0+!0 == ~1 == 2 $i++는 자체 결과 1을 증가시켜 임시 변수 ~2 ($i)에 복사합니다. 최종 결과는 ~1+~2 == 2+1입니다. ===3;

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