Menu
CoddyTech

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ênToá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.

challenge icon

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;
?>
quiz iconTự kiểm tra

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

Tự luyện tập: Trình biên dịch PHP online