Toán tử trong C++ và thứ tự ưu tiên thực hiện

383

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. 

Toán tử trong C++

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.

Toán tử trong C++

 

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

  Nạp chồng toán tử trong C++

  Biến trong C++ và cách sử dụng

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:

Xem thêm Việc làm Developer hấp dẫn trên TopDev