Lập trình C++ cơ bản
Toán tử và cách sử dụng
1. Toán tử là gì
Trong toán học, toán tử là các dấu hoặc ký hiệu như: cộng (+), trừ (-), nhân (x), chia (:), căn bậc 2 (√), lớn (>), bé (<), bằng (=),...
Toán tử là công cụ dùng để thực hiện các phép tính hoặc chức năng với dữ liệu trong lập trình được thể hiện dưới dạng ký hiệu, biểu tượng nhằm thực hiện các biểu thức.
2. Các toán tử trong C, C++
2.1. Toán tử gán
Toán tử gán được dùng để lưu giá trị cho biến. Giá trị đó có thể là một hằng số, biến số, một biểu thức hoặc kết quả của một hàm. Đây là một trong những toán tử được sử dụng thường xuyên nhất trong lập trình.
Bảng tổng hợp ký hiệu toán tử gán:
Ký hiệu toán tử | Miêu tả | Cú pháp | Phép toán tương đương |
= | 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. |
X = 1 X = Y X = Y + Z |
|
+= | 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. | X += Y | X = X + Y |
-= | 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. | X -= Y | X = X - Y |
*= | 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. | X *= Y | X = X * Y |
/= | 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. | X /= Y | X = X / Y |
%= | 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. | X %=Y | X = X % Y |
<<= | Dịch trái toán hạng trái sang số vị trí là giá trị toán hạng phải. | X <<= Y | X = X << Y |
>>= | Dịch phải toán hạng trái sang số vị trí là giá trị toán hạng phải. | X <<= Y | X = X << Y |
&= | Phép AND bit | X &= Y | X = X & Y |
^= | Phép OR loại trừ bit | X ^= Y | X = X ^ Y |
|= | Phép OR bit. | X |= Y | X = X | Y |
2.2. Toán tử số học
Đây là toán tử cơ bản nhất trong lập trình, toán tử số học là những phép toán cộng, trừ, nhân, chia cơ bản như trong toán học.
Bảng tổng hợp các ký hiệu toán tử số học: Giả sử X = 30; Y=4
Ký hiệu toán tử | Miêu tả |
Cú pháp |
Kết quả |
+ | Phép cộng | X + Y | 30 + 4 = 34 |
- | Phép trừ | X - Y | 30 - 4 = 26 |
* | Phép nhân | X * Y | 30 * 4 = 120 |
/ | Phép chia | X / Y | 30 / 4 = 7.5 |
% | Phép chia lấy phần dư | X % Y |
30 % 4 = 2 |
++ |
Tăng 1 đơn vị:
|
A= ++X + 100 A = X++ + 100 |
X= 131; A= 31 X= 131; A= 30 |
-- |
Giảm 1 đơn vị:
|
A = --X + 100 A = X-- + 100 |
X= 129; A= 29 X= 129; A= 30 |
2.3. . Toán tử so sánh
Toán tử so sánh (toán tử quan hệ) dùng để so sánh hai toán hạng (2 biến giá trị) với nhau. Kết quả trả lại của toán tử so sánh nếu đúng thì sẽ là 1 (True), còn nếu sai thì kết quả sẽ là 0 (False).
Bảng tổng hợp các ký hiệu toán tử so sánh: Giả sử X= 30; Y= 4; TRUE = 1; FALSE = 0
Ký hiệu toán tử | Miêu tả |
Cú pháp |
Ví dụ |
Kết quả |
== | Bằng | X == Y | 30 == 4 | 0 |
!= | Không bằng (Khác) | X != Y | 30 != 4 | 1 |
> | Lớn hơn | X > Y | 30 > 4 | 1 |
< | Bé hơn | X < Y | 30 < 4 | 0 |
>= | Lớn hơn hoặc bằng | X >= Y | 30 >= 4 | 1 |
<= | Bé hơn hoặc bằng | X <= Y | 30 <= 4 | 0 |
2.4. Toán tử logic
Toán tử logic (toán tử luận lý) được dùng để kiểm tra nhiều điều kiện cùng lúc. Kết quả trả lại của toán tử logic cũng giống với toán tử so sánh, nếu đúng thì kết quả là 1 (True), còn sai thì kết quả sẽ là 0 (False).
Bảng tổng hợp các ký hiệu toán tử logic: TRUE = 1; FALSE = 0
Ký hiệu toán tử | Miêu tả |
Cú pháp |
Ví dụ |
Kết quả |
&& |
AND Cả 2 mệnh đề phải đều đúng thì kết quả là TRUE |
(Mệnh đề 1) && (Mệnh đề 2) |
(0 <= 5) && (5 < 5) |
0 |
|| |
OR Chỉ cần 1 trong 2 mệnh đề đúng thì kết quả là TRUE |
(Mệnh đề 1) || (Mệnh đề2) | (0 <= 5) && (5 < 5) |
1 |
! |
NOT Phủ định mệnh đề |
!(Mệnh đề) |
!(0 == 5) |
1 |
2.5. . Toán tử hỗn hợp
Ngoài các toán tử trên, trong ngôn ngữ C/C++ còn có một số toán tử khác thường dùng sau:
Ký hiệu toán tử | Miêu tả | Cú pháp | Kết quả |
, | Dấu phẩy: ngăn cách các biến, biểu thức |
int X, Y, Z X = Y + Z, A = B - C |
|
& | Trả lại địa chỉ của một biến | &X | Trả lại địa chỉ thực sự của biến X. |
* | Trỏ tới một biến. | *X | Con trỏ đi tới biến X. |
?: | Toán tử điều kiện | (X > Y) ? A : B | Nếu điều kiện đúng thì trả lại giá trị A, nếu không thì giá trị B |
sizeof() | Toán tử sizeof: trả lại kích cỡ của một biến | sizeof(X) | X là một số nguyên. |
3. Thứ tự ưu tiên của các toán tử trong C, C++
3.1. Thứ tự ưu tiên
Cũng giống như trong toán học, chúng ta có nguyên tắc ưu tiên kinh điển là "nhân chia trước, cộng trừ sau". Trong lập trình cũng tương tự như vậy, chúng ta phải nắm được những thứ tự ưu tiên này để xác định cách thực hiện tính toán của 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, C++ với độ ưu tiên được xếp từ cao xuống thấp:
Độ ưu tiên | Phân loại toán tử | Toán tử | Thứ tự ưu tiên trong toán tử |
1 | Hậu tố | () -> . ++ -- | Trái sang phải |
2 | Đơn ngôi | + - ! ~ ++ -- (type)* & sizeof | Phải sang trái |
3 | Tính nhân, chia | * / % | Trái sang phải |
4 | Tính cộng, trừ | + - | Trái sang phải |
5 | Dịch chuyển | << >> | Trái sang phải |
6 | Quan hệ | < <= > >= | Trái sang phải |
7 | So sánh bằng | == != | Trái sang phải |
8 | AND | && | Trái sang phải |
9 | OR | || | Trái sang phải |
10 | Điều kiện | ?: | Phải sang trái |
11 | Gán | = += -= *= /= %= >>= <<= &= ^= |= | Phải sang trái |
12 | Dấu phẩy | , | Trái sang phải |
3.2. Thay đổi thứ tự ưu tiên
Tương tự với nguyên tắc "nhân chia trước - cộng trừ sau", để thay đổi thứ tự ưu tiên trên một biểu thức, bạn có thể dùng dấu ngoặc đơn ().
Xem tiếp: Các kiểu dữ liệu trong lập trình C++