Toán tử trong C++ được ví như một ký hiệu có thể dùng để thực thi một phép toán hay những chức năng khác. Do đó, để hiểu thêm và nắm vững các nguyên tắc liên quan thì mời quý đọc cùng theo dõi bài viết bên dưới.
Giới thiệu về toán tử trong C++
Đối với ngôn ngữ C++, toán tử được hiểu là tập hợp những ký tự đặc biệt và được dùng cho việc thực thi những phép tính cũng như thao tác đối với biến hay giá trị. Nó được dùng phổ biến với những kiểu dữ liệu đa dạng và khác nhau tiêu biểu như: số thực, số nguyên và chuỗi.
Có bao nhiêu loại toán tử trong C++?
Trên thực tế, sẽ có tổng cộng 46 dạng toán tử khác nhau. Tuy nhiên, trong phạm vi bài viết cũng như ứng dụng phổ biến của chúng trong các dự án C++ thì chúng tôi xin điểm qua tám loại toán tử phổ biến.
1. Toán tử số học
– Phép cộng: a + b
Ví dụ:
int a = 5; int b = 10; int sum = a + b; // sum = 15
– Phép trừ: a – b
Ví dụ:
int a = 5; int b = 10; int diff = b - a; // diff = 5
– Phép nhân: a * b
Ví dụ:
int a = 5; int b = 10; int product = a * b; // product = 50
– Phép chia: a / b
Ví dụ:
int a = 10; int b = 5; int quotient = a / b; // quotient = 2
– Phép chia lấy dư: a % b
Ví dụ:
int a = 10; int b = 3; int remainder = a % b; // remainder = 1
Chú ý: Khi bạn thực hiện phép chia, kết quả sẽ trả về với dạng số thực hay số nguyên dựa trên những toán hạng. Trong trường hợp cả hai toán hạng là số nguyên, kết quả thường là phần nguyên của phép chia. Ngược lại, nếu một trong hai là số thực thì trả về kết quả về số thực.
2. Toán tử gán
– Phép gán: a = b
Ví dụ:
int a = 5; int b; b = a; // b = 5
– Phép cộng và gán: a += b
Ví dụ:
int a = 5; int b = 10; a += b; // a = a + b = 15
– Phép trừ và gán: a -= b
Ví dụ:
int a = 5; int b = 10; b -= a; // b = b - a = 5
– Phép nhân và gán: a *= b
Ví dụ:
int a = 5; int b = 10; a *= b; // a = a * b = 50
– Phép chia và gán: a /= b
Ví dụ:
int a = 10; int b = 5; a /= b; // a = a / b = 2
– Phép chia lấy dư và gán: a %= b
Ví dụ:
int a = 10; int b = 3; a %= b; // a = a % b = 1
Chú ý: Những phép toán gán thường đi đôi với những toán tử số học để cho ra những phép toán khó hơn. Bên cạnh đó, những phép toán gán thường được dùng để cập nhật giá trị trong biến ở những vòng lặp hay trong những hàm tính toán.
3. Toán tử tăng/giảm
– Toán tử tăng: ++a hoặc a++
Ví dụ:
int a = 5; int b = ++a; // a = 6, b = 6
– Toán tử giảm: –a hoặc a—
Ví dụ:
int a = 5; int b = --a; // a = 4, b = 4
Chú ý: Toán tử tăng hay giảm dùng để tăng hay giảm giá trị trên một biến số nguyên hay một biến số thực. Thông thường, toán tử tăng (++) sẽ hỗ trợ tăng giá trị trên biến lên một và ngược lại toán tử giảm (–) sẽ làm giảm giá trị xuống một.
Chúng ta hoàn toàn có thể dùng dạng toán tử này trước hay sau biến dựa trên mục đích dùng giá trị mới trên biến. Không những thế, nó còn được dùng trong những biểu thức khó hơn để tăng hay giảm giá trị một biến thành nhiều lần.
4. Toán tử quan hệ
– Toán tử bằng: a == b
Ví dụ:
int a = 5; int b = 10; bool result = (a == b); // result = false
– Toán tử khác: a != b
Ví dụ:
int a = 5; int b = 10; bool result = (a != b); // result = true
– Toán tử lớn hơn: a > b
Ví dụ:
int a = 5; int b = 10; bool result = (a > b); // result = false
– Toán tử nhỏ hơn: a < b
Ví dụ:
int a = 5; int b = 10; bool result = (a < b); // result = true
– Toán tử lớn hơn hoặc bằng: a >= b
Ví dụ:
int a = 5; int b = 10; bool result = (a >= b); // result = false
– Toán tử nhỏ hơn hoặc bằng: a <= b
Ví dụ:
int a = 5; int b = 10; bool result = (a <= b); // result = true
Chú ý: Những toán tử quan hệ thường trả về một giá trị boolean (True hoặc False) ứng với kết quả trên phép so sánh. Chúng có thể được dùng để kiểm tra rằng hai giá trị có bằng nhau không hay phục vụ cho việc so sánh giá trị của các biến.
Không những vậy, loại toán tử này có thể dùng để kiểm tra xem điều kiện trong những câu lệnh điều kiện như ‘if’ hay ‘while’.
5. Toán tử logic
– Toán tử và: a && b
Ví dụ:
int a = 5; int b = 10; bool result = (a > 0 && b < 15); // result = true
– Toán tử hoặc: a || b
Ví dụ:
int a = 5; int b = 10; bool result = (a > 0 || b < 0); // result = true
– Toán tử phủ định: !a
Ví dụ:
int a = 5; bool result = !(a > 0); // result = false
Chú ý: Những toán tử logic thường hiển thị kết quả là một giá trị boolean (True hoặc False) ứng với kết quả trên phép logic. Tiêu biểu như toán tử và thì cho ra kết quả ‘True’ khi hai điều kiện đều ‘True’. Toán tử hoặc thì hiển thị kết quả là ‘True’ khi và chỉ khi một trong hai điều kiện là ‘True’.
Cuối cùng, toán tử phủ định sẽ làm cho kết quả đảo ngược. Loại toán tử này còn có chức năng kiểm tra điều kiện trong những câu lệnh như ‘While’ hoặc ‘If’.
6. Toán tử bit
– Toán tử AND bit: a & b
Ví dụ:
int a = 5; // binary: 0101 int b = 10; // binary: 1010 int result = (a & b); // result = 0 (binary: 0000)
– Toán tử OR bit: a | b
Ví dụ:
int a = 5; // binary: 0101 int b = 10; // binary: 1010 int result = (a | b); // result = 15 (binary: 1111)
– Toán tử XOR bit: a ^ b
Ví dụ:
int a = 5; // binary: 0101 int b = 10; // binary: 1010 int result = (a ^ b); // result = 15 (binary: 1111)
– Toán tử NOT bit: ~a
Ví dụ:
int a = 5; // binary: 0101 int result = (~a); // result = -6 (binary: 1010)
Chú ý: Toán tử bit sẽ thực thi những phép toán tương ứng với mỗi bit trên hai toán hạng cũng như hiển thị kết quả với dạng số nguyên. Đặc biệt, toán tử AND sẽ hiển thị về một khi cả hai bit ứng với hai toán hạng là: 1.
Toán tử OR bit sẽ hiển thị về 1 nếu một trong hai bit ứng với hai toán hạng cũng là 1. Toán tử XOR bit là: 1 khi hai bit ứng với hai toán hạng khác nhau. Sau cùng, toán tử NOT bit sẽ đảo ngược các bit trên toán hạng.
7. Toán tử điều kiện
– Toán tử ba ngôi: a ? b : c
Ví dụ:
int a = 5; int b = 10; int max_num = (a > b) ? a : b;
Chú ý: toán tử điều kiện thường được biểu thị qua dạng ‘condition ? value_if_true : value_if_false’. Nói cách khác, nếu ‘condition’ là đúng thì giá trị toán tử là ‘value_if_true’. Trong trường hợp nếu ‘condition’ là sai thì giá trị của nó là ‘value_if_false’.
8. Toán tử truy cập
Toán tử truy cập thành viên: a.b. Toán tử này thường dùng để truy cập trực tiếp những thành phần trên một đối tượng.
Toán tử truy cập thành viên của con trỏ: a->b. Toán tử hỗ trợ truy cập những thành phần trên một đối tượng biểu thị qua con trỏ đến chính đối tượng đó.
Ví dụ:
// khai báo một lớp đối tượng class Person { public: string name; int age; }; // tạo một đối tượng và truy cập thành phần của nó bằng toán tử . Person person1; person1.name = "John"; person1.age = 25; // tạo một con trỏ đến đối tượng và truy cập thành phần của nó bằng toán tử -> Person* person2 = new Person(); person2->name = "Jane"; person2->age = 30; // sử dụng toán tử . và toán tử -> cùng với phương thức của lớp đối tượng cout << "Person 1: " << person1.name << " is " << person1.age << " years old." << endl; cout << "Person 2: " << person2->name << " is " << person2->age << " years old." << endl;
Từ ví dụ trên các bạn sẽ thấy lớp đối tượng ‘Person’ đã được khởi tạo với hai thành phần gồm ‘name’ và ‘age’. Tiếp theo, tạo tiếp hai đối tượng là ‘person1’ và ‘person2’. Sau đó, truy cập những thành phần của chúng thông qua việc dùng toán tử ‘.’và ‘🡪’. Tóm lại, chúng ta đã dùng cả hai toán tử này để truy cập phương thức trên lớp đối tượng ‘Person’.
Kết
Toán tử trong C++ thật sự rất quan trọng đối với các bạn mới chập chững bước vào quá trình học tập và nghiên cứu về ngôn ngữ lập trình kinh điển này. Hy vọng bài viết này đã hỗ trợ bạn trong việc tìm hiểu và chinh phục nó trong tương lai. Nếu có ý kiến đóng góp, xin vui lòng phản hồi bên dưới bài viết này. Xin chân thành cám ơn!