Lập trình C: Độ ưu tiên phép toán

Các khóa học qua video:
Python SQL Server PHP C# Lập trình C Java HTML5-CSS3-JavaScript
Học trên YouTube <76K/tháng. Đăng ký Hội viên
Viết nhanh hơn - Học tốt hơn
Giải phóng thời gian, khai phóng năng lực

1. Phép toán Số học:

Các phép toán số học sẽ có sự ưu tiên thực hiện được thể hiện dưới đây:

+ Các phép Đảo dấu (-), ++ và -- được thực hiện trước tiên (đây là những phép toán một ngôi)

+ Sau đó đến các phép *, / và %

+ Rồi đến các phép + và - (phép Trừ)

+ Sau cùng là phép Gán (=).

Ví dụ:

-8 * 4 % 2 - 3 + 6.0 / 12
[-8] * 4 % 2 - 3 + 6.0 / 12
[-8 * 4] % 2 - 3 + 6.0 / 12
[-32 % 2] - 3 + 6.0 / 12
0 - 3 + [6.0 / 12]
[0 - 3] + 0.5
[-3 + 0.5]
-2.5

2. Phép toán Logic:

Mức độ ưu tiến của các phép toán Logic được thể hiện như dưới đây:

! : có mức ưu tiên cao nhất (được thực hiện trước tiên)

&& : có mức ưu tiên sau !

|| : có mức ưu tiên sau &&

Trong trường hợp có nhiều phép toán Logic trong một biểu thức điều kiện, thì ta áp dụng quy tắc tính từ phải sang trái.

Ví dụ: trong các ví dụ dưới đây, False đại diện cho giá trị 0, True đại diện cho giá trị khác không (!0)

False || True && !False && True
False || True && [!False] && True
False || True && [True && True]
False || [True && True]
[False || True]
True

3. Độ ưu tiên giữa các loại phép toán:

Mỗi loại phép toán khác nhau lại có mức ưu tiên khác nhau. Mức ưu tiên sẽ được thể hiện như dưới đây:

Các phép toán Số học sẽ được ưu tiên thực hiện trước

Sau đó đến các phép toán So sánh (hay phép toán diều kiện hoặc quan hệ)

Sau đó đến các phép toán Logic

Số học > So sánh > Logic

Ví dụ :

2*3+4/2 > 3 && 3<5 || 10<9
[2*3+4/2] > 3 && 3<5 || 10<9
[[2*3]+[4/2]] > 3 && 3<5 || 10<9
[6+2] >3 && 3<5 || 10<9
[8 >3] && [3<5] || [10<9]
True && True || False
[True && True] || False
True || False
True

4. Thay đổi độ ưu tiên:

Nếu muốn thay đổi độ ưu tiên bạn sử dụng cặp ngoặc tròn () bao ngoài phần biểu thức muốn tính toán trước.

Lưu ý: nếu có nhiều cặp ngoặc tròn lồng nhau thì biểu thức nằm trong cặp ngoặc tròn nằm trong cùng sẽ được thực hiện trước tiên.

Ví dụ :

5+9*3-4 > 10 && (2+2^4-8/4 > 6 || (2<6 && 10>11))
5+9*3-4 > 10 && (2+2^4-8/4 > 6 || ([2<6 && 10>11]))
5+9*3-4 > 10 && (2+2^4-8/4 > 6 || ([True && False]))
5+9*3-4 > 10 && ([2+2^4-8/4 > 6 || False])
5+9*3-4 >10 && ([2+16-8/4 > 6 || False])
5+9*3-4 > 10 && ([2+16-2 > 6 || False])
5+9*3-4 > 10 && ([18-2 > 6 || False])
5+9*3-4 > 10 && ([16 > 6 || False])
5+9*3-4 > 10 && ([True || False])
[5+9*3-4] > 10 && True
[5+27-4] >10 && True
[32-4>10 && True
[28 >10] && True
True && True
True

Kết quả của biểu thức trên được thể hiện trong ngôn ngữ C như hình dưới đây:

 Ngôn ngữ C: Phép toán

» Tiếp: printf() & scantf()
« Trước: Phép toán Logic nhị phân
Các khóa học qua video:
Python SQL Server PHP C# Lập trình C Java HTML5-CSS3-JavaScript
Học trên YouTube <76K/tháng. Đăng ký Hội viên
Viết nhanh hơn - Học tốt hơn
Giải phóng thời gian, khai phóng năng lực
Copied !!!