C++: Bài 10. Phép toán


Đăng ký nhận thông báo về những video mới nhất

Một phép toán (toán tử) là một ký hiệu yêu cầu trình biên dịch thực hiện các thao tác toán học hoặc logic cụ thể. C++ có nhiều toán tử cài sẵn và cung cấp các loại toán tử sau:

  • Arithmetic (số học)
  • Relational (quan hệ hoặc so sánh)
  • Logic (logic)
  • Bitwise (logic nhị phân)
  • Assignment (gán
  • Misc (trộn)

Phép toán số học

Các toán tử số học sau được C++ hỗ trợ:

Giả sử biến A lưu 10 và biến B lưu 20, thì:

Phép toán Mô tả Ví dụ
+ Cộng 2 số A + B sẽ được 30
- Trừ 2 số A - B sẽ được -10
* Nhân 2 số A * B sẽ được 200
/ Chia 2 số (chia lấy phần nguyên) B / A sẽ được 2
% Chia 2 số (chia lấy phần dư) B % A sẽ được 0
++ Tăng giá trị của biến lên 1 A++ sẽ được 11
-- Giảm giá trị của biến đi 1 A-- sẽ được 9

Phép toán quan hệ (so sánh)

Các toán tử quan hệ sau được C++ hỗ trợ:

Giả sử biến A lưu 10 và biến B lưu 20, thì:

Toán tử Mô tả Ví dụ
== Kiểm tra xem 2 số hạng có bằng nhau không, nếu có thì kết quả so sánh là true, ngược lại là false. (A == B) cho kết quả false.
!= Kiểm tra xem 2 số hạng có khác nhau không, nếu có thì trả về true, ngược lại là false. (A != B) cho kết quả true.
> Kiểm tra xem số hạng bên trái có lớn hơn số hạng bên phải không, nếu có thì kết quả so sánh là true, ngược lại là false. (A > B) cho kết quả false.
< Kiểm tra xem số hạng bên trái có nhỏ hơn số hạng bên phải không, nếu có thì kết quả so sánh là true, ngược lại là false. (A < B) cho kết quả true.
> = Kiểm tra xem số hạng bên trái có lớn hơn hoặc bằng số hạng bên phải không, nếu có thì kết quả so sánh là true, ngược lại là false. (A >= B) cho kết quả false.
<= Kiểm tra xem số hạng bên trái có nhỏ hơn hoặc bằng số hạng bên phải không, nếu có thì kết quả so sánh là true, ngược lại là false. (A <= B) cho kết quả true.

Phép toán logic

Các toán tử logic sau được C++ hỗ trợ:

Giả sử biến A lưu 1 và biến B lưu 0, thì:

Toán tử Mô tả Ví dụ
&& Toán tử AND logic. Nếu điều kiện bên trái và bên phải đều là true hoặc khác 0 thì kết quả là true, ngược lại là false. (A && B) là sai.
|| Toán tử OR logic. Nếu một trong 2 điều kiện trái hoặc phải của phép toán là true hoặc khác 0 thì kết quả là true, ngược lại là false. (A || B) là true.
! Toán tử NOT logic hay còn gọi là toán tử phủ định. Nó sẽ phủ định true thành false và false thành true. ! (A && B) là đúng.

Phép toán logic nhị phân

Toán tử bitwise hoạt động trên các bit và thực hiện hoạt động từng bit. Bảng dưới đây trình bày các phép toán logic nhị phân gồm & (AND nhị phân), | (OR nhị phân), và ^ (XOR nhị phân):

p q p & q p | m q
0 0 0 0 0
0 1 0 1 1
1 1 1 1 0
1 0 0 1 1

Giả sử A = 60, B = 13, thì dạng nhị phân của A và B như sau:

A = 0011 1100

B = 0000 1101

-----------------

A&B = 0000 1100

A|B = 0011 1101

A^B = 0011 0001

~ A = - (A + 1)

Các toán tử Bitwise được hỗ trợ bởi ngôn ngữ C++ được liệt kê trong bảng dưới đây.

Giả sử biến A lưu 60 và biến B lưu 13, thì:

Toán tử Mô tả Ví dụ
& Toán tử Binary AND sao chép một bit vào kết quả nếu nó tồn tại trong cả hai toán hạng. (A & B) sẽ cho kết quả 12 là 0000 1100
| Toán tử OR nhị phân sao chép một bit nếu nó tồn tại trong một trong hai toán hạng. (A | B) sẽ cho 61 là 0011 1101
^ Toán tử XOR nhị phân sao chép bit nếu nó được đặt trong một toán hạng nhưng không phải cả hai. (A ^ B) sẽ cho 49 là 0011 0001
~ Toán tử bổ sung số nhị phân là một ngôi và có tác dụng 'lật' các bit. (~ A) sẽ cho -61 là 1100 0011 ở dạng phần bù của 2 do một số nhị phân có dấu.
<< Toán tử dịch trái nhị phân. Giá trị của toán hạng bên trái được di chuyển sang trái bằng số bit được chỉ định bởi toán hạng bên phải. A << 2 sẽ cho 240 là 1111 0000
>> Toán tử dịch phải nhị phân. Giá trị toán hạng bên trái được di chuyển sang phải bằng số bit được chỉ định bởi toán hạng bên phải. A >> 2 sẽ cho 15 là 0000 1111

Phép toán gán

Có các toán tử gán sau được ngôn ngữ C++ hỗ trợ:

Toán tử Mô tả Ví dụ
= Toán tử gán đơn giản, gán giá trị của toán hạng bên phải cho toán hạng bên trái. C = A + B sẽ gán giá trị của A + B cho C
+= Toán tử cộng xong gán, nó cộng thêm một lượng vào cho toán hạng bên trái. C += A tương đương với C = C + A
-= Toán tử trừ xong gán, nó trừ bớt của toán hạng bên trái một lượng. C -= A tương đương với C = C - A
*= Toán tử nhân xong gán, nó nhân thêm cho toán hạng bên trái một lượng. C *= A tương đương với C = C * A
/= Toán tử chia xong gán, nó chia bớt toán hạng bên trái một lượng. C /= A tương đương với C = C / A
%= Toán tử chia dư xong gán, nó chia bớt toán hạng bên trái một lượng, rồi gán phần dư cho toán hạng bên trái. C %= A tương đương với C = C % A
<<= Toán tử dịch trái xong gán, nó dịch trái toán hạng bên trái một lượng, được bao nhiêu gán lại cho toán hạng bên trái. C << = 2 tương đương với C = C << 2
>>= Toán tử dịch phải xong gán, nó dịch phải toán hạng bên trái một lượng, được bao nhiêu gán lại cho toán hạng bên trái. C >>= 2 tương đương với C = C >> 2
&= Toán tử AND nhị phân xong gán, nó lấy toán hạng bên trái đem AND nhị phân với 1 số, kết quả được gán ngược trở lại cho toán hạng bến trái. C &= 2 tương đương C = C & 2
^= Toán tử XOR nhị phân xong gán, nó lấy toán hạng bên trái đem XOR nhị phân với 1 số, kết quả được gán ngược trở lại cho toán hạng bến trái. C ^= 2 tương đương với C = C ^ 2
|= Toán tử OR nhị phân xong gán, nó lấy toán hạng bên trái đem OR nhị phân với 1 số, kết quả được gán ngược trở lại cho toán hạng bến trái. C |= 2 tương đương với C = C | 2

Các phép toán khác

Bảng sau liệt kê một số toán tử khác mà C++ hỗ trợ.

Toán tử và mô tả

sizeof

Trả về kích thước (theo Byte) của một biến. Ví dụ: sizeof (a), trong đó 'a' là số nguyên và sẽ trả về 4.

điều_kiện ? X : Y

Toán tử điều kiện 3 ngôi. Nếu điều_kiện là true thì nó trả về giá trị của X, ngược lại trả về giá trị của Y.

,

Toán tử dấu phẩy gây ra một chuỗi hoạt động được thực thi. Giá trị của toàn bộ biểu thức dấu phẩy là giá trị của biểu thức cuối cùng của danh sách được phân tách bằng dấu phẩy.

. (dấu chấm) và -> (mũi tên)

Được sử dụng để tham chiếu các thành phần của các lớp, cấu trúc và union.

cast

Chuyển đổi một kiểu dữ liệu này sang kiểu dữ liệu khác. Ví dụ, int(2.2000) sẽ trả về 2.

&

Toán tử con trỏ &, trả về địa chỉ của một biến. Ví dụ &a; sẽ cung cấp địa chỉ thực của biến a.

*

Toán tử con trỏ *, là con trỏ tới một biến. Ví dụ *var; sẽ trỏ đến một biến var.

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

Mức độ ưu tiên của toán tử xác định nhóm các thuật ngữ trong một biểu thức. Điều này ảnh hưởng đến cách một biểu thức được đánh giá. Một số toán tử nhất định có quyền ưu tiên cao hơn những toán tử khác; ví dụ, toán tử nhân có mức độ ưu tiên cao hơn toán tử cộng.

Ví dụ x = 7 + 3 * 2; ở đây, x được gán 13, không phải 20 vì toán tử * có mức độ ưu tiên cao hơn +, vì vậy đầu tiên nó được nhân với 3 * 2 và sau đó cộng với 7.

Trong bảng dưới đây, các toán tử có mức độ ưu tiên cao nhất xuất hiện ở đầu bảng, những toán tử có mức độ ưu tiên thấp nhất xuất hiện ở cuối bảng. Trong một biểu thức, các toán tử có mức độ ưu tiên cao hơn sẽ được đánh giá đầu tiên.

Thể loại Toán tử Thứ tự ưu tiên
Postfix  () [] ->. ++ - -   Trái sang phải 
Một ngôi  + - ! ~ ++ - - (type)* & sizeof  Phải sang trái 
Phép nhân   * / %  Trái sang phải 
Cộng trừ  + -  Trái sang phải 
Shift   << >>  Trái sang phải 
So sánh <  <=  >  >=  Trái sang phải 
So sánh bằng == !=  Trái sang phải 
AND nhị phân Trái sang phải 
XOR nhị phân Trái sang phải 
OR nhị phân  Trái sang phải 
AND logic &&  Trái sang phải 
OR logic  ||  Trái sang phải 
Điều kiện 3 ngôi ?:  Phải sang trái 
Gán  = += -= *= /= %= >>= <<= &= ^= | Phải sang trái 
Dấu phẩy Trái sang phải 

Nếu bạn có điều thắc mắc, bạn hãy comment cho V1Study để được giải đáp.
Bài viết này được chia sẻ bởi LongDT. Nếu bạn muốn chia sẻ bài viết, bạn hãy Đăng ký làm thành viên!
« Prev
Next »
Copied !!!