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


Đăng ký nhận thông báo về những video mới nhất

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


Nếu bạn có điều thắc mắc, bạn hãy comment cho V1Study để được giải đáp.
Bài viết này được chia sẻ bởi LongDT. Nếu bạn muốn chia sẻ bài viết, bạn hãy Đăng ký làm thành viên!
« Prev
Next »
Copied !!!