Thứ tự ưu tiên của toán tử trong C



Thứ tự ưu tiên toán tử trong C xác định cách biểu thức được tính toán. Ví dụ, toán tử nhân có quyền ưu tiên hơn toán tử cộng, và nó được thực hiện trước.

Ví dụ, x = 7 + 3 * 2; ở đây, x được gán giá trị 13, chứ không phải 20 bởi vì toán tử * có quyền ưu tiên cao hơn toán tử +, vì thế đầu tiên nó thực hiện phép nhân 3 * 2 và sau đó thêm với 7.

Bảng dưới đây liệt kê thứ tự ưu tiên của các toán tử. Các toán tử với quyền ưu tiên cao nhất xuất hiện trên cùng của bảng, và các toán tử có quyền ưu tiên thấp nhất thì ở bên dưới cùng của bảng. Trong một biểu thức, các toán tử có quyền ưu tiên cao nhất được tính toán đầu tiên.

Loại  Toán tử  Thứ tự ưu tiên 
Postfix  () [] -> . ++ - -   Trái sang phải 
Unary  + - ! ~ ++ - - (type)* & sizeof  Phải sang trái 
Tính nhân   * / %  Trái sang phải 
Tính cộng   + -  Trái sang phải 
Dịch chuyển   << >>  Trái sang phải 
Quan hệ   < <= > >=  Trái sang phải 
Cân bằng   == !=  Trái sang phải 
Phép AND bit  Trái sang phải 
Phép XOR bit  Trái sang phải 
Phép OR bit  Trái sang phải 
Phép AND logic  &&  Trái sang phải 
Phép OR logic  ||  Trái sang phải 
Điều kiện  ?:  Phải sang trái 
Gán  = += -= *= /= %=>>= <<= &= ^= |=  Phải sang trái 
Dấu phảy  Trái sang phải 

Ví dụ

Bạn xem xét ví dụ sau để hiểu về thứ tự ưu tiên các toán tử trong ngôn ngữ C:

#include main()
{
   int a = 35;
   int b = 14;
   int c = 5;
   int d = 6;
   int e;
 
   e = (a + b) * c / d;      
   printf("Gia tri cua bieu thuc (a + b) * c / d la: %d\n",  e );   e = ((a + b) * c) / d;    
   printf("Gia tri cua bieu thuc ((a + b) * c) / d la: %d\n" ,  e );   e = (a + b) * (c / d);   
   printf("Gia tri cua bieu thuc (a + b) * (c / d) la: %d\n",  e );   e = a + (b * c) / d;     
   printf("Gia tri cua bieu thuc a + (b * c) / d la: %d\n" ,  e );
   printf("===========================\n");
   printf("VietJack chuc cac ban hoc tot! \n");
  
   return 0;
}

Biên dịch và thực thi chương trình C trên sẽ cho kết quả sau:

Thứ tự ưu tiên toán tử trong C

Các bài học lập trình C phổ biến khác tại VietJack:


toan_tu_trong_c.jsp