Thứ tự ưu tiên 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ụ

Dưới đây là ví dụ minh họa cho thứ tự ưu tiên toán tử trong C#:

using System;namespace VietJackCsharp
{
    class TestCsharp
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Thu tu uu tien toan tu trong C#");
            Console.WriteLine("-------------------------------");            int a = 20;
            int b = 10;
            int c = 15;
            int d = 5;
            int e;
            e = (a + b) * c / d;     // ( 30 * 15 ) / 5
            Console.WriteLine("Gia tri cua (a + b) * c / d la : {0}", e);            e = ((a + b) * c) / d;   // (30 * 15 ) / 5
            Console.WriteLine("Gia tri cua ((a + b) * c) / d la: {0}", e);            e = (a + b) * (c / d);   // (30) * (15/5)
            Console.WriteLine("Gia tri cua (a + b) * (c / d) la: {0}", e);            e = a + (b * c) / d;    //  20 + (150/5)
            Console.WriteLine("Gia tri cua a + (b * c) / d la: {0}", e);
            Console.ReadLine();            Console.ReadKey();
        }
    }
}

Nếu bạn không sử dụng lệnh Console.ReadKey(); thì chương trình sẽ chạy và kết thúc luôn (nhanh quá đến nỗi bạn không kịp nhìn kết quả). Lệnh này cho phép chúng ta nhìn kết quả một cách rõ ràng hơn.

Biên dịch và chạy chương trình C# trên sẽ cho kết quả sau:

Thứ tự ưu tiên toán tử trong C#
toan_tu_trong_csharp.jsp