2012-04-04 16 views
5

İşte garip bir çıktı veren basit bir php programı. Bunun neden böyle geldiğini ve beklenen çıktının nasıl alınacağını herkes anlatabilir mi?PHP'de basit bir aritmetik

<?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; 
?> 

Çıktı:

3-3 
MUL:6 
DIV:0.66666666666667 

Beklenen Çıktı: dize birleştirme operatörü . ekleme/alt operatör olarak same precedence vardır ve çünkü hepsi bırakılan edilir

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

cevap

12

-associative. Bu, değerlendirmenin soldan sağa doğru ilerlediği anlamına gelir, bu nedenle önce "<br> ADD:".$a değerlendirilir ve sonuç 3'a eklenir. Bu özel dize sıfıra ve 0 + 3 = 3'e dönüşür. Çıkarma için de benzerdir.

Çözüm: aritmetiği parantez içine alın. onlar beklenen sonucu üretmek, böylece Öte yandan

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

, mul/div birleştirme daha yüksek önceliğe sahiptir.

+0

Harika cevap Jon! Teşekkür ederim. – Stranger

İlgili konular