Mô tả

Toán tử trong C là một ký hiệu được sử dụng để thực hiện một phép tính/chức năng nào đó. Ngôn ngữ lập trình C cung cấp các dạng toán tử sau:

  1. Toán tử số học.
  2. Toán tử quan hệ.
  3. Toán tử logic.
  4. Toán tử so sánh bit.
  5. Toán tử gán.
  6. Toán tử hỗn hợp.
  7. Thứ tự ưu tiên.

1. Toán tử số học trong C

Bảng dưới đây mô tả các toán tử số học được hỗ trợ bởi ngôn ngữ C. Giả sử biến A = 10 và biến B = 20:

Toán tử Miêu tả Ví dụ
+ Cộng hai toán hạng A + B sẽ cho kết quả là 30
Trừ hai toán hạng A – B sẽ cho kết quả là -10
* Nhân hai toán hạng A * B sẽ cho kết quả là 200
/ Chia lấy phần nguyên hai toán hạng B / A sẽ cho kết quả là 2
% Chia lấy phần dư B % A sẽ cho kết quả là 0
++ Tăng giá trị toán hạng thêm 1 đơn vị A++ sẽ cho kết quả là 11
Giảm giá trị toán hạng một đơn vị A– sẽ cho kết quả là 9

2. Toán tử quan hệ trong C

Các toán tử quan hệ được sử dụng kiểm tra mối quan hệ giữa hai toán hạng. Kết quả của một biểu thức có dùng các toán tử quan hệ là những giá trị Boolean (logic “true” hoặc “false”). Các toán tử quan hệ được sử dụng trong các cấu trúc điều khiển.

Bảng dưới đây mô tả các toán tử quan hệ được hỗ trợ bởi ngôn ngữ C. Giả sử biến A = 10 và biến B = 20:

Toán tử Miêu tả Ví dụ
== Kiểm tra nếu 2 toán hạng bằng nhau hay không. Nếu bằng thì điều kiện là true. (A == B) là không đúng.
!= Kiểm tra 2 toán hạng có giá trị khác nhau hay không. Nếu không bằng thì điều kiện là true. (A != B) là true.
> Kiểm tra nếu toán hạng bên trái có giá trị lớn hơn toán hạng bên phải hay không. Nếu lớn hơn thì điều kiện là true. (A > B) là không đúng.
< Kiểm tra nếu toán hạng bên trái nhỏ hơn toán hạng bên phải hay không. Nếu nhỏ hơn thì là true. (A < B) là true.
>= Kiểm tra nếu toán hạng bên trái có giá trị lớn hơn hoặc bằng giá trị của toán hạng bên phải hay không. Nếu đúng là true. (A >= B) là không đúng.
<= Kiểm tra nếu toán hạng bên trái có giá trị nhỏ hơn hoặc bằng toán hạng bên phải hay không. Nếu đúng là true. (A <= B) là true.

3. Toán tử logic trong C

Bảng dưới đây mô tả các toán tử logic được hỗ trợ bởi ngôn ngữ C. Giả sử biến A = true (hoặc 1) và biến B = false (hoặc 0)

Toán tử Miêu tả Ví dụ
&& Được gọi là toán tử logic AND (và). Nếu cả hai toán tử đều có giá trị khác 0 thì điều kiện trở lên true. (A && B) là false.
|| Được gọi là toán tử logic OR (hoặc). Nếu một trong hai toán tử khác 0, thì điều kiện là true. (A || B) là true.
! Được gọi là toán tử NOT (phủ định). Sử dụng để đảo ngược lại trạng thái logic của toán hạng đó. Nếu điều kiện toán hạng là true thì phủ định nó sẽ là false. !(A && B) là true.

4. Toán tử bit trong C

Các toán tử dạng bit cho phép chúng ta thao tác trên từng bit riêng biệt trong các kiểu dữ liệu nguyên thủy. Giả sử A = 60 (= 0011 1100) và B = 13 (= 0000 1101)

Toán tử Miêu tả Ví dụ
& Toán tử AND (và) nhị phân sao chép một bit tới kết quả nếu nó tồn tại trong cả hai toán hạng. (A & B) sẽ cho kết quả là 12, tức là 0000 1100
| Toán tử OR (hoặc) nhị phân sao chép một bit tới kết quả nếu nó tồn tại trong một hoặc hai toán hạng. (A | B) sẽ cho kết quả là 61, tức là 0011 1101
^ Toán tử XOR nhị phân sao chép bit mà nó chỉ tồn tại trong một toán hạng mà không phải cả hai. (A ^ B) sẽ cho kết quả là 49, tức là 0011 0001
~ Toán tử đảo bit (đảo bit 1 thành bit 0 và ngược lại). (~A ) sẽ cho kết quả là -61, tức là 1100 0011.
<< Toán tử dịch trái. Giá trị toán hạng trái được dịch chuyển sang trái bởi số các bit được xác định bởi toán hạng bên phải. A << 2 sẽ cho kết quả 240, tức là 1111 0000 (dịch sang trái hai bit)
>> Toán tử dịch phải. Giá trị toán hạng trái được dịch chuyển sang phải bởi số các bit được xác định bởi toán hạng bên phải. A >> 2 sẽ cho kết quả là 15, tức là 0000 1111 (dịch sang phải hai bit)

5. Toán tử gán trong C

Toán tử gán dùng để gán một giá trị vào một biến và có thể gán nhiều giá trị cho nhiều biến cùng một lúc.

Toán tử Miêu tả Ví dụ
= Toán tử gán đơn giản. Gán giá trị toán hạng bên phải cho toán hạng trái. C = A + B sẽ gán giá trị của A + B vào trong C
+= Thêm giá trị toán hạng phải tới toán hạng trái và gán giá trị đó cho toán hạng trái. C += A tương đương với C = C + A
-= Trừ đi giá trị toán hạng phải từ toán hạng trái và gán giá trị này cho toán hạng trái. C -= A tương đương với C = C – A
*= Nhân giá trị toán hạng phải với toán hạng trái và gán giá trị này cho toán hạng trái. C *= A tương đương với C = C * A
/= Chia toán hạng trái cho toán hạng phải và gán giá trị này cho toán hạng trái. C /= A tương đương với C = C / A
%= Lấy phần dư của phép chia toán hạng trái cho toán hạng phải và gán cho toán hạng trái. C %= A tương đương với C = C % A
<<= Dịch trái toán hạng trái sang số vị trí là giá trị toán hạng phải. C <<= 2 tương đương với C = C << 2
>>= Dịch phải toán hạng trái sang số vị trí là giá trị toán hạng phải. C >>= 2 tương đương với C = C >> 2
&= Phép AND bit C &= 2 tương đương với C = C & 2
^= Phép OR loại trừ bit C ^= 2 tương đương với C = C ^ 2
|= Phép OR bit. C |= 2 tương đương với C = C | 2

6. Toán tử hỗn hợp trong C

Có một số toán tử hỗn hợp quan trọng là sizeof và ? : được hỗ trợ bởi ngôn ngữ C.

Toán tử Miêu tả Ví dụ
sizeof() Trả lại kích cỡ của một biến sizeof(a), với a là integer, thì sẽ trả lại kết quả là 4.
& Trả lại địa chỉ của một biến. &a; sẽ cho địa chỉ thực sự của biến a.
* Trỏ tới một biến. *a; sẽ trỏ tới biến a.
? : Biểu thức điều kiện Nếu điều kiện là true ? thì giá trị X : Nếu không thì giá trị Y

7. Thứ tự ưu tiên

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

Thứ tự ưu tiên quyết định trật tự thực hiện các toán tử trên các biểu thức. Bảng dưới đây liệt kê thứ tự thực hiện các toán tử trong C.

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 

Thay đổi thứ tự ưu tiên của các toán tử trong C

Để thay đổi thứ tự ưu tiên trên một biểu thức, bạn có thể sử dụng dấu ngoặc đơn ():

  • Phần được giới hạn trong ngoặc đơn được thực hiện trước.
  • Nếu dùng nhiều ngoặc đơn lồng nhau thì toán tử nằm trong ngoặc đơn phía trong sẽ thực thi trước, sau đó đến các vòng phía ngoài.
  • Trong phạm vi một cặp ngoặc đơn thì quy tắc thứ tự ưu tiên vẫn giữ nguyên tác dụng.

Ví dụ, x = 10 + 5 * 2; ở đây, x được gán giá trị 20, chứ không phải 30 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 5 * 2 và sau đó thêm với 10.

Để thay đổi thứ tự ưu tiên ta dùng dấu (), ví dụ, x = (10 + 5) * 2; ở đây x = 30.

Đăng nhập
Đăng ký
Hotline: 0904251826
x