Thứ tự ưu tiên của toán tử
Thuộc phần Kiến thức cơ bản trong hành trình PHP của Coddy. Bài học 20 trên 71.
Khi một biểu thức có nhiều toán tử, PHP tuân theo một thứ tự cụ thể gọi là độ ưu tiên của toán tử. Cũng như trong toán học, phép nhân và phép chia được thực hiện trước phép cộng và phép trừ.
<?php
echo 5 + 3 * 2; // Đầu ra: 11, không phải 16
?>PHP thực hiện phép nhân 3 × 2 trước (được 6), sau đó cộng 5. Nếu các toán tử có cùng độ ưu tiên, PHP sẽ tính từ trái sang phải: 5 + 3 = 8, sau đó 8 × 2 = 16. Nhưng mọi thứ không hoạt động như vậy.
Đây là thứ tự ưu tiên từ cao nhất đến thấp nhất của các toán tử bạn đã học:
| Độ ưu tiên | Toán tử |
| Cao nhất | ** (lũy thừa) |
| Cao | * / % |
| Thấp | + - |
Để ghi đè thứ tự mặc định, hãy dùng ngoặc đơn. Các phép toán bên trong ngoặc đơn luôn được tính trước:
<?php
echo (5 + 3) * 2; // Đầu ra: 16
echo 2 ** 3 * 2; // Đầu ra: 16 (8 * 2)
echo 2 ** (3 * 2); // Đầu ra: 64 (2^6)
?>Khi không chắc chắn, hãy dùng dấu ngoặc đơn để làm rõ ý định của bạn. Điều này giúp bạn dễ đọc code hơn và tránh kết quả không mong muốn.
Thử thách
DễĐọc ba số từ đầu vào: a, b và c.
Tính và in ra kết quả của biểu thức sau, dùng dấu ngoặc đơn để phép cộng diễn ra trước phép nhân:
(a + b) * c ** 2
Điều này có nghĩa là: trước tiên cộng a và b, sau đó nhân tổng đó với c lũy thừa 2.
Ví dụ:
Nếu đầu vào là 2, 3 và 4, đầu ra sẽ là 80 vì:
- Trước tiên, cộng 2 + 3 = 5
- Sau đó, tính 4 ** 2 = 16
- Cuối cùng, nhân 5 * 16 = 80
Tự làm thử
<?php
// Đọc đầu vào
$a = intval(fgets(STDIN));
$b = intval(fgets(STDIN));
$c = intval(fgets(STDIN));
// TODO: Viết code bên dưới để tính (a + b) * c ** 2
// In ra kết quả
echo $result;
?>Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.
Tất cả bài học trong Kiến thức cơ bản
4Toán tử so sánh và logic
Toán tử so sánhBằng nhau và đồng nhấtToán tử logic phần 1Toán tử logic phần 2Ôn tập: logic đơn giản2Biến và kiểu dữ liệu
SốChuỗi và dấu ngoặc képGiá trị BooleanQuy ước đặt tênÔn tập: khởi tạo biếnBiến rỗngNối chuỗiNhận đầu vào từ người dùngChuyển đổi sang kiểu dữ liệu khác5Logic điều kiện
Câu lệnh ifIf và elseToán tử ba ngôiToán tử kết hợp nullCâu lệnh switchÔn tập: đưa ra quyết định3Các toán tử cơ bản
Toán tử số họcToán tử chia lấy dưToán tử lũy thừaPhép gán kết hợpTăng/giảmThứ tự ưu tiên của toán tửÔn tập: phép tính đơn giảnToán tử chuỗiTự luyện tập: Trình biên dịch PHP online