2012-04-04 42 views
5

Đây là một chương trình php đơn giản cho kết quả lạ. Bất cứ ai có thể giải thích lý do tại sao nó đến như thế này và làm thế nào để có được sản lượng dự kiến?Số học đơn giản trong 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; 
?> 

Output:

3-3 
MUL:6 
DIV:0.66666666666667 

Output dự kiến:

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

Trả lời

12

Đó là bởi vì các nhà điều hành nối chuỗi .same precedence như các nhà khai thác thêm/phụ, và tất cả chúng đều rời - xã hội. Điều này có nghĩa là việc đánh giá tiến hành từ trái sang phải, do đó, "<br> ADD:".$a được đánh giá trước tiên và kết quả được thêm vào 3. Chuỗi cụ thể này chuyển thành 0 và 0 + 3 = 3. Tương tự cho phép trừ.

Giải pháp: đặt số học trong dấu ngoặc đơn.

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

Mặt khác, mul/div có quyền ưu tiên cao hơn nối để chúng tạo ra kết quả mong đợi.

+0

Câu trả lời hay Jon! Cảm ơn bạn. – Stranger

Các vấn đề liên quan