Toán tử (Operator) là một khái niệm cơ bản trong mọi ngôn ngữ lập trình, một yếu tố không thể thiếu trong mọi chương trình chạy và cũng là một phần kiến thức quan trọng mà chúng ta cần nắm vững khi viết code. C++ là một ngôn ngữ lập trình đa năng, bậc cao được sử dụng nhiều trong tính toán; vì thế nó cũng được trang bị đầy đủ các loại toán tử khác nhau. Bài viết hôm nay chúng ta cùng tìm hiểu về toán tử trong C++, các loại toán tử với cách sử dụng và thứ tự ưu tiên thực hiện của nó nhé.
Toán tử trong C++ là gì?
Toán tử – Operators là những ký hiệu, biểu tượng được quy định sẵn từ trước; hoạt động trên các giá trị (có thể thông qua các biến) để thực hiện các phép tính toán cụ thể trong chương trình. Ví dụ chúng ta muốn thực hiện phép toán cộng 2 giá trị 5 và 3; để thông báo với cho trình compiler biết và thực hiện phép toán này, ta cần viết code theo đúng cú pháp 5 + 3.
Một phép toán sẽ bao gồm các toán hạng và toán tử, chẳng hạn như 5 + 3 thì 5 và 3 là các toán hạng (operands), ký hiệu + được gọi là toán tử. Toán tử một ngôi là những toán tử chỉ chứa 1 toán hạng, ví dụ như phép phủ định hay đảo bit. Toán tử hai ngôi là loại toán tử phổ biến nhất, thường sử dụng như các phép cộng, trừ, nhân, chia hay các phép so sánh, … Toán tử ba ngôi dùng để chỉ phép điều kiện, thể hiện câu lệnh if else ở dạng ngắn.
Các loại toán tử trong C++
Toán tử là một khái niệm nền tảng trong bất kỳ ngôn ngữ lập trình nào. Trong C++ cũng quy định sẵn hầu hết các toán tử cơ bản với đầy đủ các chức năng cần thiết trong quá trình chạy chương trình để giải quyết bài toán. Chúng ta có những loại toán tử như dưới đây:
Toán tử số học
Là những toán tử thực hiện các phép toán số học cơ bản như cộng trừ nhân chia, …
Ví dụ biến a giữ giá trị là 10, biến b giữ giá trị 2:
Ký hiệu | Toán tử | Mô tả | Ví dụ |
+ | Cộng | Cộng hai toán hạng | a + b = 12 |
– | Trừ | Trừ toán hạng thứ hai từ toán hạng đầu | a – b = 8 |
* | Nhân | Nhân hai toán hạng | a * b = 20 |
/ | Chia | Chia toán hạng đầu cho toán hạng thứ hai | a / b = 5 |
% | Phần dư | Lấy phần dư phép chia toán hạng đầu cho toán hạng thứ hai | a % 4 = 2 |
++ | Tăng | Tăng giá trị toán hạng lên một đơn vị | a++ = 11 |
— | Giảm | Giảm giá trị toán hạng đi một đơn vị | a– = 1 |
Toán tử quan hệ
Là những toán tử thực hiện việc so sánh giá trị, so sánh các biểu thức với nhau và trả về kết quả true/ false.
Ví dụ biến a giữ giá trị là 10, biến b giữ giá trị 2:
Ký hiệu | Toán tử | Mô tả | Ví dụ |
== | Bằng | Kiểm tra hai toán hạng có bằng nhau hay không | a == b = false |
!= | Khác | Kiểm tra hai toán hạng có khác nhau hay không | a != b = true |
> | Lớn hơn | Kiểm tra toán hạng đầu có lớn hơn toán hạng thứ hai hay không | a > b = true |
< | Bé hơn | Kiểm tra toán hạng đầu có bé hơn toán hạng thứ hai hay không | a < b = false |
>= | Lớn hơn hoặc bằng | Kiểm tra toán hạng đầu có lớn hơn hoặc bằng toán hạng thứ hai hay không | a >= 4 = true |
<= | Bé hơn hoặc bằng | Kiểm tra toán hạng đầu có bé hơn hoặc bằng toán hạng thứ hai hay không | a <= b = false |
Toán tử logic
Là những toán tử thực hiện các phép toán logic AND, OR, NOT
Ví dụ biến a giữ giá trị là 1, biến b giữ giá trị 0:
Ký hiệu | Toán tử | Mô tả | Ví dụ |
&& | AND (Và) | Trả về true nếu cả hai toán tử đều có giá trị khác 0 | a && b = false |
|| | OR (Hoặc) | Trả về true nếu một trong hai toán tử khác 0 | a || b = true |
! | NOT (Phủ định) | Đảo ngược trạng thái logic của toán hạng | !b = true, !a = false |
Toán tử so sánh bit
Là những toán tử thao tác làm việc với hệ nhị phân (các bit) giá trị các biến.
Ví dụ biến a giữ giá trị là 0011 1100, biến b giữ giá trị 0000 1101 :
Ký hiệu | Toán tử | Mô tả | Ví dụ |
& | AND (Và) | 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 = 0000 1100 |
| | OR (Hoặc) | Sao chép một bit tới kết quả nếu nó tồn tại ít nhất ở một trong hai toán hạng | a | b = 0011 1101 |
^ | XOR | Sao chép một bit tới kết quả nếu nó chỉ tồn tại ở một trong hai toán hạng | a ^ b = 0011 0001 |
~ | Đảo bit | Đảo bit 1 thành 0 và ngược lại 0 thành 1 | ~a = 1100 0011 |
<< | Dịch trái | Dịch chuyển toán tử bên trái sang trái một số bit được xác định bởi toán tử bên phải | a << 2 = 1111 0000 |
>> | Dịch phải | Dịch chuyển toán tử bên trái sang phải một số bit được xác định bởi toán tử bên phải | a >> 2 = 0000 1111 |
Xem thêm việc làm C++ hấp dẫn trên TopDev
Toán tử gán
Toán tử gán được sử dụng để gán một giá trị cho biến, thêm vào đó là việc kết hợp các toán tử số học đi kèm trước phép gán, ví dụ như += là toán tử thực hiện phép cộng trước, sau đó sẽ gán.
Ký hiệu | Toán tử | Mô tả | Ví dụ |
= | Bằng | Gán giá trị toán hạng bên phải cho toán hạng bên trái | a = 2, b = 5 |
+=,-=, *=, /=, %= | Cộng/ Trừ/ Nhân/ Chia / Phần dư bằng | Thực hiện phép toán cộng/ trừ/ nhân/ chia/ phần dư với toán hạng bên trái và toán hạng bên phải. Gán kết quả phép toán cho toán hạng bên trái | a+=5 => a = 7
b-=2 => b = 3 a*=b => a = 10 |
<<=, >>=, &=, |=, ^= | Dịch trái/ Dịch phải/ AND/ OR/ XOR bằng | Thực hiện các phép toán thao tác bit với toán hạng bên trái và toán hạng bên phải. Gán kết quả phép toán cho toán hạng bên trái | a = 0011 1100
b = 0000 1101 a <<= 2 => a = 1111 0000 a &= b => a = 0000 1100 |
Toán tử hỗn hợp
Là những toán tử được hỗ trợ bởi ngôn ngữ C++ phục vụ cho các thao tác cụ thể, các chức năng mà ngôn ngữ này hỗ trợ.
Ký hiệu | Mô tả | Ví dụ |
sizeof | Trả về kích thước của một biến | int a = 10; sizeof(a) => 4 |
[condition]
? [true_case] : [false_case} |
Toán tử ba ngôi, xử lý câu điều kiện ở dạng rút gọn. Trong đó nếu condition đúng thì sẽ thực hiện true_case và ngược lại sẽ thực hiện false_case | int b = 5;
a = (b < 10) ? 30 : 40; => a = 40 |
, (comma) | Làm cho một dãy hoạt động được thực hiện | a = (a=19, b=10, a+1);
=> a = 20 |
. (dot)
-> (arrow) |
Sử dụng để tham chiếu các phần tử đơn trong lớp, các cấu trúc và union | person.name
pointer_person -> name |
cast | Ép kiểu, biến đổi thành kiểu dữ liệu khác | a = (int) b |
& | Trả về địa chỉ của một biến | &a |
* | Trỏ tới một biến | int *ptr |
Thứ tự ưu tiên toán tử trong C++
Trong một biểu thức có nhiều toán tử thì việc xác định thứ tự ưu tiên thực hiện sẽ giúp phép toán cho ra kết quả đúng. Bảng dưới đây mô tả thứ tự thực hiện các toán tử trừ trên xuống dưới, trên cùng sẽ được ưu tiên cao nhất.
STT | Ký hiệu | Toán tử |
1 | () [] -> . ++ – – | Hậu tố |
2 | + – ! ~ ++ – – (type)* & sizeof | Toán tử 1 ngôi |
3 | * / % | Phép nhân/ chia |
4 | + – | Phép cộng/ trừ |
5 | << >> | Dịch bit |
6 | < <= > >= | Toán tử quan hệ |
7 | == != | Toán tử so sánh |
8 | & | Phép AND bit |
9 | ^ | Phép XOR bit |
10 | | | Phép OR bit |
11 | && | Phép AND logic |
12 | || | Phép OR logic |
13 | ? : | Toán tử 3 ngôi, câu điều kiện rút gọn |
14 | = += -= *= /= %=>>= <<= &= ^= |= | Phép gán |
15 | , | Dãy phép toán |
Kết bài
Qua bài viết này hy vọng các bạn đã nắm rõ được về khái niệm toán tử trong C++; có các loại toán tử nào trong ngôn ngữ này cũng như thứ tự ưu tiên của từng loại để thực hiện trong chương trình. Cảm ơn các bạn đã đọc bài và hẹn gặp lại trong các bài viết tiếp theo của mình.
Tác giả: Phạm Minh Khoa
Xem thêm:
- C++ algorithm: Những thuật toán cơ bản trong C++
- Map trong C++ và các thao tác cơ bản
- So sánh C# và C++ – Nên học ngôn ngữ nào?
Xem thêm Việc làm Developer hấp dẫn trên TopDev