Toán tử là một ký hiệu nói cho bộ biên dịch biết sẽ thực hiện thao tác logic hay toán học. C# cung cấp nhiều toán tử xây dựng sẵn:

  • Toán tử số học
  • Toán tử quan hệ
  • Toán tử logic
  • Toán tử trên bit
  • Toán tử gán
  • Toán tử hổn hợp
  1. Toán tử số học

Bảng dưới cho ta thấy những toán tử số học được hỗ trợ bởi C#. Với 2 biến A có giá trị 10 và B có giá trị 20, ta có:

Operator Description Example
+ Cộng hai toán hạng A + B = 30
Toán hạng trước trừ toán hạng sau A – B = -10
* Nhân hai toán hạng A * B = 200
/ Chia tử số cho mẫu số B / A = 2
% Phép toán lấy phần dư B % A = 0
++ Toán tử tăng, tăng giá trị nguyên lên 1 đơn vị A++ = 11
Toán tử giảm, giảm giá trị nguyên xuống 1 đơn vị A– = 9

 

Ví dụ:

 

Kết quả của đoạn code trên :

  1. Toán tử quan hệ

Bảng dưới đây là các toán tử quan hệ được C# cung cấp. Với giá trị biến A là 10, biến B là 20, ta có:

Operator Description Example
== Kiểm tra nếu giá trị 2 biến bằng nhau thì trả về giá trị true, ngược lại false (A == B) is not true.
!= Kiểm tra nếu giá trị 2 biến khác nhau thì trả về giá trị true, ngược lại false (A != B) is true.
> Kiểm tra nếu giá trị biến bên trái lớn hơn biến bên phải thì trả về giá trị true, ngược lại false (A > B) is not true.
< Kiểm tra nếu giá trị biến bên trái bé hơn biến bên phải thì trả về giá trị true, ngược lại false (A < B) is true.
>= Kiểm tra nếu giá trị biến bên trái lớn hơn hoặc bằng biến bên phải trả về giá trị true, ngược lại false (A >= B) is not true.
<= Kiểm tra nếu giá trị biến bên trái bé hơn hoặc bằng biến bên phải trả về giá trị true, ngược lại false (A <= B) is true.

 

Ví dụ:

Kết quả sau khi chạy chương trình trên:

  1. Toán tử logic

    Với biến A và biến B mang giá trị kiểu Boolean, bảng sau là các toán tử logic được cung cấp bởi C#.

    Operator Description Example
    && Gọi toán tử login AND, nếu cả hai toán hạng đều đúng thì điều kiện đó đúng. (A && B) is false.
    || Gọi toán tử logic OR, nếu cả hai toán hạng đều sai thì điều kiện đó sai. (A || B) is true.
    ! Gọi toán tử logic NOT, dùng để đảo trạng thái logic của toán hạng. Nếu một điều kiện đúng sẽ chuyển thành sai khi dùng toán tử này. !(A && B) is true.

    Ví dụ:

    Kết quả sau khi chạy chương trình trên:

    1. Toán tử trên bit

     

    Toán tử trên bit làm việc trên các bit. Bảng sau đây là bảng sự thật các toán tử trên bit:

    p q p & q p | q p ^ q
    0 0 0 0 0
    0 1 0 1 1
    1 1 1 1 0
    1 0 0 1 1

    Với A=60, B=13, Chuyển hai số này sang nhị phân được:

    • A = 0011 1100
    • B = 0000 1101

    Ta có:

    Operator Description Example
    & Toán tử nhị phân AND, copy bit 1 vào kết quả nếu nó tồn tại trong cả 2 toán hạng (A & B) = 12, tương đương 0000 1100
    | Toán tử nhị phân OR, copy bit 1 vào kết quả nếu nó tồn tại trong 1 trong 2 toán hạng. (A | B) = 61, tương đương 0011 1101
    ^ Toán tử nhị phân XOR, copy bit 1 vào kết quả nếu nó chỉ tồn tại trong 1 trong 2 toán hạng (A ^ B) = 49, tương đương 0011 0001
    ~ Toán tử nhị phân bù 1 có tác dụng đảo bit (~A ) = 61, tương đương 1100 0011
    << Toán tử nhị phân dịch trái, dịch bit sang trái một số lượng bit bằng toán hạng bên phải. A << 2 = 240, tương đương 1111 0000
    >> Toán tử nhị phân dịch phải, dịch bit sang phải một số lượng bit bằng toán hạng bên phải. A >> 2 = 15, tương đương 0000 1111

     

    Ví dụ:

    Kết quả:

    1. Toán tử gán

    Operator Description Example
    = Gán giá trị toán hạng bên phải cho toán hạng bên trái C = A + B assigns value of A + B into C
    += Cộng toán hạng bên trái và toán hạng bên phải, gán kết quả cho toán hạng bên trái. C += A is equivalent to C = C + A
    -= Toán hạng bên trái trừ toán hạng bên phải và gán kết quả này cho toán hạng bên trái. C -= A is equivalent to C = C – A
    *= Nhân 2 toán hạng và gán kết quả này cho toán hạng bên trái. C *= A is equivalent to C = C * A
    /= Toán hạng bên trái chia toán hạng bên phải và gán kết quả này cho toán hạng bên trái. C /= A is equivalent to C = C / A
    %= Toán hạng bên trái chia lấy dư toán hạng bên phải và gán kết quả này cho toán hạng bên trái. C %= A is equivalent to C = C % A
    <<= Toán tử dịch trái. C <<= 2 is same as C = C << 2
    >>= Toán tử dịch phải C >>= 2 is same as C = C >> 2
    &= Toán tử AND trên bit C &= 2 is same as C = C & 2
    ^= Toán tử gán và OR loại trừ trên bit C ^= 2 is same as C = C ^ 2
    |= Toán tử gán và OR bao hàm trên bit C |= 2 is same as C = C | 2

     

    Ví dụ:

    Kết quả:

    1. Toán tử hỗn hợp 

      Có một số toán tử hỗn hợp quan trọng như sizeof, typeof và ? : được  C# cung cấp:

      Operator Description Example
      sizeof() Trả về kích cỡ của kiểu dữ liệu sizeof(int), returns 4.
      typeof() Tả về kiểu của class typeof(StreamReader);
      & Trả về địa chỉ của một biến &a; returns actual address of the variable.
      * Trỏ đến một biến *a; creates pointer named ‘a’ to a variable.
      ? : Biểu thức điều kiện If Condition is true ? Then value X : Otherwise value Y
      is Xác định một đới tượng có thuộc loại nào đó If( Ford is Car) // checks if Ford is an object of the Car class.
      as Ép kiểu mà không gây ra exeption nếu ép kiểu thất bại. Object obj = new StringReader(“Hello”);

      StringReader r = obj as StringReader;

       

      Ví dụ: 

      Kết quả sau khi chạy chương trình trên:

      • Độ ưu tiên của toán tử:

       

      Độ ưu tiên xác định thứ tự thực hiện toán tử trong biểu thức trong một biểu thức. Điều này ảnh hưởng đến kết quả của một biểu thức. Một số toán tử có độ ưu tiên cao hơn so với những toán tử khác khác; Ví dụ, phép nhân có độ ưu tiên cao hơn so với phép cộng.

      Ví dụ x = 7 + 3 * 2; :  x được gán 13, không phải 20 vì toán tử * có độ ưu tiên cao hơn +, vì vậy ưu tiên 3 *2 và sau đó 7 được thêm vào nó.

      Bảng sau đây là thứ tự ưu tiên của các toán tử. Ở đây, phía trên cùng của bảng là các toán tử có độ ưu tiên cao nhất và giảm dần về cuối bảng. Trong một biểu thức, các toán tử có độ ưu tiên cao được thực hiện đầu tiên.

      Category Operator Associativity
      Postfix () [] -> . ++ – – Left to right
      Unary + – ! ~ ++ – – (type)* & sizeof Right to left
      Multiplicative * / % Left to right
      Additive + – Left to right
      Shift << >> Left to right
      Relational < <= > >= Left to right
      Equality == != Left to right
      Bitwise AND & Left to right
      Bitwise XOR ^ Left to right
      Bitwise OR | Left to right
      Logical AND && Left to right
      Logical OR || Left to right
      Conditional ?: Right to left
      Assignment = += -= *= /= %=>>= <<= &= ^= |= Right to left
      Comma , Left to right

       

      Ví dụ:

      Chúc các bạn thành công!

      Xem thêm Bài 09: Câu lệnh điều kiện trong C#

ĐỂ LẠI PHẢN HỒI CỦA BẠN TẠI ĐÂY

Phản hồi về bài viết này

NO COMMENTS

LEAVE A REPLY


*