Biểu thức và thứ tự ưu tiên của các toán tử trong biểu thức

Đây là bài 13/43 bài của series môn học Nhập môn lập trình

1. Biểu thức (expression) là gì?

Biểu thức được tạo thành từ toán tử (Operator) và toán hạng (Operand). Toán hạng có thể là biến, hằng, lời gọi hàm/thủ tục,…

Biểu thức là gì
Biểu thức được tạo thành từ toán tử và toán hạng

Ví dụ:

– Biểu thức: X + Y có X, Y là toán hạng, + là toán tử. + là toán tử hai ngôi vì có hai toán hạng.

– Biểu thức: ! (A && B) có (A && B) là biểu thức con, ! là toán tử một ngôi vì chỉ cần 1 toán hạng, && là toán tử hai ngôi với hai toán hạng là A và B.

– Chúng ta thường viết gọn biểu thức như 4y(3-2)y + 7. Trong lập trình, biểu thức này cần được triển khai đầy đủ là 4 * y * (3-2) * y + 7.

Lưu ý: Toán hạng phải có kiểu tương thích với kiểu mà toán tử có thể thực hiện được.

2. Thứ tự ưu tiên của các toán tử trong biểu thức

Trong một biểu thức có thể có nhiều toán tử, câu hỏi đặt ra là toán tử nào sẽ được thực hiện trước? Thứ tự thực hiện của các toán tử có thể ảnh hưởng đến kết quả của biểu thức.

Ngôn ngữ lập trình C++ đã quy định sẵn các thứ tự ưu tiên của các toán tử trong biểu thức.

Thứ tự ưu tiênToán tửTính liên kết
1(), [], ++ (tăng sau, a++), – -(giảm sau, a- -)Từ trái sang phải
2!, ~, ++ (tăng trước, ++a), – -(giảm trước, – -a)Từ phải sang trái
3*, /, %Từ trái sang phải
4+, –Từ trái sang phải
5<<, >>Từ trái sang phải
6<, <=, >, >=Từ trái sang phải
7==, !=Từ trái sang phải
8&Từ trái sang phải
9^Từ trái sang phải
10|Từ trái sang phải
11&&Từ trái sang phải
12||Từ trái sang phải
13=, +=, -=, *=, /=, %=Từ phải sang trái

Quy tắc thực hiện phép toán trong biểu thức

– Thực hiện biểu thức trong ngoặc ( ) sâu nhất trước.

– Thực hiện theo thứ tự ưu tiên các toán tử.

– Có thể tự chủ động thêm ( )

Ví dụ thứ tự ưu tiên các toán tử trong biểu thức:

– Biểu thức: n = 2 + 3 * 5 => n = 2 + (3 * 5)
– Biểu thức: a > 1 && b < 2 => (a > 1) && (b < 2)

3. Một số ví dụ viết biểu thức cho các mệnh đề

– Mệnh đề: x lớn hơn hay bằng 3 thì biểu thức là x >= 3

– Mệnh đề: a và b cùng dấu thì biểu thức là ((a>0) && (b>0)) || ((a<0) && (b<0)) hoặc (a>0 && b>0) || (a<0 && b<0)
– Mệnh đề: p bằng q bằng r thì biểu thức là (p == q) && (q == r) hoặc (p == q && q == r)
– Mệnh đề: –5 < x < 5 thì biểu thức là (x > –5) && (x < 5) hoặc (x > –5 && x < 5)

Ngoài ra, còn có rất nhiều mệnh đề cần được chuyển thành biểu thức để đưa vào lập trình. Các bạn sẽ dần được tìm hiểu trong những bài sau.

5/5 - (1 bình chọn)
Bài trước và bài sau trong môn học<< Toán tử logic, toán tử trên bit và toán tử gán trong C++Thư viện cmath và một số hàm toán học thông dụng trong C++ >>
Chia sẻ trên mạng xã hội:

Trả lời

Lưu ý:

1) Vui lòng bình luận bằng tiếng Việt có dấu.

2) Khuyến khích sử dụng tên thật và địa chỉ email chính xác.

3) Mọi bình luận trái quy định sẽ bị xóa bỏ.