2012-04-04 2 views
5

이상한 결과를주는 간단한 PHP 프로그램입니다. 아무도 왜 이렇게오고 있으며 예상되는 결과를 얻는 지 설명 할 수 있습니까?PHP의 간단한 산법

<?php 
$a=2;$b=3; 

echo "<br> ADD:".$a+$b; 
echo "<br> SUB:".$a-$b; 
echo "<br> MUL:".$a*$b; 
echo "<br> DIV:".$a/$b; 
?> 

출력 :

3-3 
MUL:6 
DIV:0.66666666666667 

예상 출력 : 문자열 연결 연산자 .가 추가/하위 사업자로 same precedence을 가지고 있으며, 때문에 그것은 그들 모두가 남아있다

ADD:5 
SUB:-1 
MUL:6 
DIV:0.66666666666667 

답변

12

- 연관성. 즉, 왼쪽에서 오른쪽으로 평가가 진행되므로 "<br> ADD:".$a이 먼저 평가되고 결과는 3에 추가됩니다. 이 특정 문자열은 0으로 변환되고 0 + 3 = 3입니다. 빼기와 유사합니다.

솔루션 : 괄호 안에 산술 연산을 넣으십시오.

echo "<br> ADD:".($a+$b); 
echo "<br> SUB:".($a-$b); 

반면에 mul/div는 연결보다 높은 우선 순위를 가지므로 예상 결과가 산출됩니다.

+0

위대한 답변 Jon! 고맙습니다. – Stranger