Toán tử logic: Trả về giá trị là true (đúng) hoặc false (sai)
Trong ngôn ngữ C, 2 trạng thái true(đúng) và false(sai) được biểu diễn bởi các số nguyên int:
- Số 0 biểu diễn cho trạng thái false (sai).
- Tất cả các số nguyên khác 0 biểu diễn cho trạng thái true (đúng).
Các toán tử logic:
-
&&
(and) trả về true khi cả 2 toán hạng đều đúng. Ngược lại trả về false.-
(5<6) && (7<8)
-> true -
(5>6) && (7<8)
-> false -
(5>6) && (7>8)
-> false
-
-
||
(or) trả về true khi ít nhất một trong 2 toán hạng đúng. Ngược lại trả về false.-
(5<6) && (7<8)
-> true -
(5>6) && (7<8)
-> true -
(5>6) && (7>8)
-> false
-
-
(not) trả về true khi toán hạng (đằng sau dấusai). Ngược lại trả về false.
-
!(7>8)
-> true -
!(7<8)
-> false
-
Toán tử so sánh bit
Toán tử so sánh bit làm việc trên đơn vị bit, tính toán biểu thức so sánh từng bit. Bảng dưới đây về &, |, và ^ như sau:
p & q | p | q | p ^ q |
Giả sử nếu A = 60; và B = 13; thì bây giờ trong định dạng nhị phân chúng sẽ là như sau:
A = 0011 1100
B = 0000 1101
—————–
A&B = 0000 1100
A|B = 0011 1101
A^B = 0011 0001
~A = 1100 0011
Các toán tử so sánh bit được hỗ trợ bởi ngôn ngữ C được liệt kê trong bảng dưới đây. Giá sử ta có biến A có giá tri 60 và biến B có giá trị 13, ta có:
Toán tử | Mô tả | Ví dụ |
Toán tử AND (và) nhị phân 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) sẽ cho kết quả là 12, tức là 0000 1100 | |
Toán tử OR (hoặc) nhị phân sao chép một bit tới kết quả nếu nó tồn tại trong một hoặc hai toán hạng. | (A | B) sẽ cho kết quả là 61, tức là 0011 1101 | |
Toán tử XOR nhị phân sao chép bit mà nó chỉ tồn tại trong một toán hạng mà không phải cả hai. | (A ^ B) sẽ cho kết quả là 49, tức là 0011 0001 | |
Toán tử đảo bit (đảo bit 1 thành bit 0 và ngược lại). | (~A ) sẽ cho kết quả là -61, tức là 1100 0011. | |
<< | Toán tử dịch trái. Giá trị toán hạng trái được dịch chuyển sang trái bởi số các bit được xác định bởi toán hạng bên phải. | A << 2 sẽ cho kết quả 240, tức là 1111 0000 (dịch sang trái hai bit) |
>> | Toán tử dịch phải. Giá trị toán hạng trái được dịch chuyển sang phải bởi số các bit được xác định bởi toán hạng bên phải. | A >> 2 sẽ cho kết quả là 15, tức là 0000 1111 (dịch sang phải hai bit) |
Toán tử toán học
Ngôn ngữ C cung cấp 5 toán tử toán học cơ bản:
Ví dụ:
#include int main() { int a = 5, b = 7; double c = 4.5, d = 6; printf("%d + %f = %f \n", a, c, a + c); printf("%d - %d = %d \n", a, b, a - b); printf("%d * %f = %f \n", b, d, b * d); /* Luu y phep chia nhe*/ printf("%d / %d = %d \n", b, a, b / a); printf("%f / %d = %f \n", c, a, c / a); printf("%f / %f = %f \n", c, d, c / d); printf("%d %% %d = %d \n", b, a, b % a); return 0; }
Kết quả thu được:
5 + 4.500000 = 9.500000 5 – 7 = -2 7 * 6.000000 = 42.000000 7 / 5 = 1 4.500000 / 5 = 0.900000 4.500000 / 6.000000 = 0.750000 7 % 5 = 2
Toán tử lấy phần dư (%) yêu cầu cả hai toán hạng là số nguyên. Nó trả về phần dư còn lại của phép chia. Ví dụ 7 % 5 được tính toán bằng cách chia số nguyên 7 cho 5 để được 1 và phần dư là 2; vì thế kết quả là 2.
Thông thường, nếu cả hai toán hạng là số nguyên sau đó kết quả sẽ là một số nguyên. Tuy nhiên, một hoặc cả hai toán hạng là số thực thì sau đó kết quả sẽ là một số thực.
Khi cả hai toán hạng của toán tử chia là số nguyên thì sau đó phép chia được thực hiện như là một phép chia số nguyên và không phải là phép chia thông thường mà chúng ta sử dụng. Phép chia số nguyên luôn cho kết quả là phần nguyên của thương. Ví dụ: 7 / 5 = 1 chứ không phải 7 / 5 = 1.4. Để khắc phục lỗi này thì ta có thể chuyển một số hoặc cả 2 số sang kiểu thực rồi thực hiện phép chia. Cách chuyển kiểu (hay ép kiểu) ta như sau:
(kiểu cần chuyển) biến. VD: (float) a;
Lưu ý khi ép kiểu thế này thì kiểu của các biến ban đầu không thay đổi mà chỉ là giá trị tức thời (tại thời điểm đó thay đổi sang kiểu mới). Để lưu lại giá trị tức thời này bạn cần khai báo thêm một biến mới có kiểu cần chuyển và gán giá trị đó lại. Ví dụ:
#include int main() { int a = 5, b = 7; double c; printf("%d / %d = %d \n", b, a, b / a); /* Chuyen gia tri tuc thoi cua b sang kieu so thuc*/ printf("%d / %d = %f \n", b, a, (double)b / a); /* Chuyen gia tri tuc thoi cua a sang kieu so thuc*/ printf("%d / %d = %f \n", b, a, b / (double)a); /* Neu lam the nay thi van khong dung, vi b/a duoc so nguyen * sau do chung ta moi ep kieu so nguyen do sang so thuc */ printf("%d / %d = %f \n", b, a, (double)(b / a)); return 0; }
Kết quả thu được:
7 / 5 = 1 7 / 5 = 1.400000 7 / 5 = 1.400000 7 / 5 = 1.000000
Toán tử logic
Bảng dưới đây chỉ rõ tất cả các toán tử logic được hỗ trợ bởi ngôn ngữ C. Giả sử biến A có giá trị 1 và biến B có giá trị 0:
Toán tử | Mô tả | Ví dụ |
&& | Được gọi là toán tử logic AND (và). Nếu cả hai toán tử đều có giá trị khác 0 thì điều kiện trở lên true. | (A && B) là false. |
|| | Được gọi là toán tử logic OR (hoặc). Nếu một trong hai toán tử khác 0, thì điều kiện là true. | (A || B) là true. |
Được gọi là toán tử NOT (phủ định). Sử dụng để đảo ngược lại trạng thái logic của toán hạng đó. Nếu điều kiện toán hạng là true thì phủ định nó sẽ là false. | !(A && B) là true. |
Toán tử số học trong C
Bảng dưới đây mô tả các toán tử số học được hỗ trợ bởi ngôn ngữ C. Giả sử biến A = 10 và biến B = 20:
Toán tử | Miêu tả | Ví dụ |
Thêm hai toán hạng | A + B sẽ cho kết quả là 30 | |
Trừ giá trị toán hạng hai từ toán hạng đầu | A – B sẽ cho kết quả là -10 | |
Nhân hai toán hạng | A * B sẽ cho kết quả là 200 | |
Chia lấy phần nguyên hai toán hạng | B / A sẽ cho kết quả là 2 | |
Chia lấy phần dư | B % A sẽ cho kết quả là 0 | |
++ | Lượng gia giá trị toán hạng thêm 1 đơn vị | A++ sẽ cho kết quả là 11 |
— | Lượng giảm giá trị toán hạng một đơn vị | A– sẽ cho kết quả là 9 |
Toán tử logic trong C
Bảng dưới đây mô tả các toán tử logic được hỗ trợ bởi ngôn ngữ C. Giả sử biến A = true (hoặc 1) và biến B = false (hoặc 0):
Toán tử | Miêu tả | Ví dụ |
&& | Được gọi là toán tử logic AND (và). Nếu cả hai toán tử đều có giá trị khác 0 thì điều kiện trở lên true. | (A && B) là false. |
|| | Được gọi là toán tử logic OR (hoặc). Nếu một trong hai toán tử khác 0, thì điều kiện là true. | (A || B) là true. |
Được gọi là toán tử NOT (phủ định). Sử dụng để đảo ngược lại trạng thái logic của toán hạng đó. Nếu điều kiện toán hạng là true thì phủ định nó sẽ là false. | !(A && B) là true. |
Toán tử là gì?
Toán tử là một biểu tượng mà nói với trình biên dịch thực hiện một phép toán học nhất định hoặc thao tác hợp lý. Ngôn ngữ C có sẵn rất nhiều toán tử và cung cấp các kiểu toán tử sau đây:
- Toán tử số học
- Toán tử gán
- Toán tử quan hệ
- Toán tử logic
- Toán tử bit
- Toán tử đặc biệt
Dẫn nhập
Ở bài học trước, bạn đã nắm được các loại HẰNG SỐ TRONG C++ (Constants), và đã biết được những kinh nghiệm cũng như thắc mắc liên quan đến việc khởi tạo và sử dụng hằng số một cách hiệu quả.
Hôm nay, mình sẽ hướng dẫn chi tiết về Toán tử số học, toán tử tăng giảm và toán tử gán trong C++ (Arithmetic operators), là tiền đề để bạn có thể giải được các bài toán trong lập trình.
Toán tử gán
Đây là những toán tử gán được hỗ trợ bởi ngôn ngữ C:
Toán tử | Mô tả | Ví dụ |
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. | C = A + B sẽ gán giá trị của A + B vào trong C | |
+= | 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. | C += A tương đương với C = C + A |
-= | 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. | C -= A tương đương với C = C – A |
*= | 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. | C *= A tương đương với C = C * A |
/= | 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. | C /= A tương đương với C = C / A |
%= | 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. | C %= A tương đương với C = C % A |
<<= | Dịch trái toán hạng trái sang số vị trí là giá trị toán hạng phải. | C <<= 2 tương đương với C = C << 2 |
>>= | Dịch phải toán hạng trái sang số vị trí là giá trị toán hạng phải. | C >>= 2 tương đương với C = C >> 2 |
&= | Phép AND bit | C &= 2 tương đương với C = C & 2 |
^= | Phép OR loại trừ bit | C ^= 2 tương đương với C = C ^ 2 |
|= | Phép OR bit. | C |= 2 tương đương với C = C | 2 |
Toán tử quan hệ
Bảng dưới đây chỉ ra tất cả các toán tử quan hệ được hỗ trợ bởi ngôn ngữ C. Giả sử rằng biến A có giá trị 10 và biến B có giá trị 20, ta có:
Toán tử | Mô tả | Ví dụ |
== | Kiểm tra nếu 2 toán hạng bằng nhau hay không. Nếu bằng thì điều kiện là true. | (A == B) là không đúng. |
!= | Kiểm tra 2 toán hạng có giá trị khác nhau hay không. Nếu không bằng thì điều kiện là true. | (A != B) là true. |
Kiểm tra nếu toán hạng bên trái có giá trị lớn hơn toán hạng bên phải hay không. Nếu lớn hơn thì điều kiện là true. | (A > B) là không đúng. | |
Kiểm tra nếu toán hạng bên trái nhỏ hơn toán hạng bên phải hay không. Nếu nhỏ hơn thì là true. | (A < B) là true. | |
>= | Kiểm tra nếu toán hạng bên trái có giá trị lớn hơn hoặc bằng giá trị của toán hạng bên phải hay không. Nếu đúng là true. | (A >= B) là không đúng. |
<= | Kiểm tra nếu toán hạng bên trái có giá trị nhỏ hơn hoặc bằng toán hạng bên phải hay không. Nếu đúng là true. | (A <= B) là true. |
Toán tử gán trong C++
Dưới đây là những toán tử gán được hỗ trợ bởi ngôn ngữ C++:
Toán tử | Miêu tả | Ví dụ |
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. | C = A + B sẽ gán giá trị của A + B vào trong C | |
+= | 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. | C += A tương đương với C = C + A |
-= | 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. | C -= A tương đương với C = C – A |
*= | 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. | C *= A tương đương với C = C * A |
/= | 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. | C /= A tương đương với C = C / A |
%= | 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. | C %= A tương đương với C = C % A |
<<= | Dịch trái toán hạng trái sang số vị trí là giá trị toán hạng phải. | C <<= 2 tương đương với C = C << 2 |
>>= | Dịch phải toán hạng trái sang số vị trí là giá trị toán hạng phải. | C >>= 2 tương đương với C = C >> 2 |
&= | Phép AND bit | C &= 2 tương đương với C = C & 2 |
^= | Phép OR loại trừ bit | C ^= 2 tương đương với C = C ^ 2 |
|= | Phép OR bit. | C |= 2 tương đương với C = C | 2 |
Toán tử quan hệ trong C++
Bảng dưới đây liệt kê các toán tử quan hệ được hỗ trợ bởi ngôn ngữ C++:
Giả sử biến A giữ giá trị 10, biến B giữ 20 thì:
Toán tử | Miêu tả | Ví dụ |
== | Kiểm tra nếu 2 toán hạng bằng nhau hay không. Nếu bằng thì điều kiện là true. | (A == B) là không đúng |
!= | Kiểm tra 2 toán hạng có giá trị khác nhau hay không. Nếu không bằng thì điều kiện là true. | (A != B) là true |
Kiểm tra nếu toán hạng bên trái có giá trị lớn hơn toán hạng bên phải hay không. Nếu lớn hơn thì điều kiện là true. | (A > B) là không đúng | |
Kiểm tra nếu toán hạng bên trái nhỏ hơn toán hạng bên phải hay không. Nếu nhỏ hơn thì là true. | (A < B) là true | |
>= | Kiểm tra nếu toán hạng bên trái có giá trị lớn hơn hoặc bằng giá trị của toán hạng bên phải hay không. Nếu đúng là true. | (A >= B) là không đúng |
<= | Kiểm tra nếu toán hạng bên trái có giá trị nhỏ hơn hoặc bằng toán hạng bên phải hay không. Nếu đúng là true. | (A <= B) là true |
Toán tử gán (Assignment Operators)
Toán tử gán dùng để gán 1 giá trị cho 1 biến. Cú pháp:
=
hoặc
=
Ngoài ra toán tử gán còn sử dụng khi sử dụng chính nó để tính toán với một biến khác.
Toán tử | Viết gọn | Viết đầy đủ |
a = b | a = b | |
+= | a += b | a = a+b |
-= | a -= b | a = a-b |
*= | a *= b | a = a*b |
/= | a /= b | a = a/b |
%= | a %= b | a = a%b |
VD:
#include
int main(){ int a = 5, c; c = a; // c is 5 printf(“c = %d\n”, c); c += a; // c is 10 => c = c + a printf(“c = %d\n”, c); c -= a; // c is 5 => c = c – a printf(“c = %d\n”, c); c *= a; // c is 25 => c = c * a printf(“c = %d\n”, c); c /= a; // c is 5 => c = c / a printf(“c = %d\n”, c); c %= a; // c = 0 => c = c % a printf(“c = %d\n”, c); return 0; }
Kết quả
Toán tử gán số học trong C++ (Arithmetic assignment operators)
Toán tử gán có mục đích đưa giá trị của 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 vào biến được gán.
Bảng bên dưới mô tả các toán tử gán số học trong C++:
Ngoài toán tử gán bằng (=), C++ cung cấp thêm 5 toán tử gán khác tương ứng với 5 toán tử số học cộng (+), trừ (-), nhân (*), chia nguyên (/), chia dư (%). Nhằm giúp biểu thức trở nên ngắn gọn hơn.
Ví dụ:
#include
using namespace std; int sum(int a, int b) { return a + b; } int main() { int x = 9; int y = 9; x = x + 6; // x += 6 cout << "x = x + 6 = " << x << endl; y += 6; // y = y + 6 cout << "y += 6 = " << x << endl; int z = sum(x, y); cout << "Sum of x and y is " << z << endl; return 0; }
Outputs:
Toán tử logic trong C++
Bảng dưới đây chỉ rõ tất cả các toán tử logic được hỗ trợ bởi ngôn ngữ C.
Giả sử biến A có giá trị 1 và biến B có giá trị 0:
Toán tử | Miêu tả | Ví dụ |
&& | Được gọi là toán tử logic AND (và). Nếu cả hai toán tử đều có giá trị khác 0 thì điều kiện trở lên true. | (A && B) là false. |
|| | Được gọi là toán tử logic OR (hoặc). Nếu một trong hai toán tử khác 0, thì điều kiện là true. | (A || B) là true. |
Được gọi là toán tử NOT (phủ định). Sử dụng để đảo ngược lại trạng thái logic của toán hạng đó. Nếu điều kiện toán hạng là true thì phủ định nó sẽ là false. | !(A && B) là true. |
Toán tử quan hệ
Ngôn ngữ C cung cấp 6 toán tử quan hệ để so sánh các số. Các toán tử quan hệ có giá trị 1 (khi kết quả đúng) hoặc 0 (khi kết quả sai).
Chúng ta sử dụng các toán tử này để so sánh các giá trị, các ký tự,… tuy nhiên không so sánh các xâu với nhau vì điều này sẽ dẫn đến các địa chỉ của chuỗi được so sánh chứ không phải là nội dung chuỗi. Chúng ta có các hàm so sánh xâu ở thư viện string và sẽ tìm hiểu sau. Khi so sánh các ký tự với nhau thì bản chất ta có thể hiểu là máy so sánh các mã ASCII của các ký tự với nhau. VD. ‘A’ >’B’ sẽ trả về giá trị 0 vì ‘A’ có mã ASCII là 65 còn ‘B’ là 66.
Toán tử hỗn hợp trong C
Có một số toán tử hỗn hợp quan trọng là sizeof và ? : được hỗ trợ bởi ngôn ngữ C.
Toán tử | Miêu tả | Ví dụ |
sizeof() | Trả lại kích cỡ của một biến | sizeof(a), với a là integer, thì sẽ trả lại kết quả là 4. |
Trả lại địa chỉ của một biến. | &a sẽ cho địa chỉ thực sự của biến a. | |
Trỏ tới một biến. | *a; sẽ trỏ tới biến a. | |
? : | Biểu thức điều kiện | Nếu điều kiện là true ? thì giá trị X : Nếu không thì giá trị Y |
Toán tử quan hệ (Relational Operators) hay toán tử so sánh
Toán tử quan hệ hay so sánh sử dụng các phép toán so sánh giữa các số, biến và hằng. Giá trị trả về là logic (
true
hoặc
false
tương ứng với
1 hoặc 0)
Các toán tử này sử dụng làm điều kiện trong các lệnh so sánh như if, case hoặc while, for sẽ học trong các bài sau.
Toán tử | Ý nghĩa | Ví dụ |
== | so sánh bằng | |
so sánh lớn hơn | ||
so sánh nhỏ hơn | ||
!= | so sánh khác | |
>= | lớn hơn hoặc bằng | |
<= | nhỏ hơn hoặc bằng |
VD:
#include
int main(){ int a = 5, b = 5, c = 10; printf(“%d == %d is %d \n”, a, b, a == b); printf(“%d == %d is %d \n”, a, c, a == c); printf(“%d > %d is %d \n”, a, b, a > b); printf(“%d > %d is %d \n”, a, c, a > c); printf(“%d < %d is %d \n”, a, b, a < b); printf(“%d < %d is %d \n”, a, c, a < c); printf(“%d != %d is %d \n”, a, b, a != b); printf(“%d != %d is %d \n”, a, c, a != c); printf(“%d >= %d is %d \n”, a, b, a >= b); printf(“%d >= %d is %d \n”, a, c, a >= c); printf(“%d <= %d is %d \n”, a, b, a <= b); printf(“%d <= %d is %d \n”, a, c, a <= c); }
Kết quả:
Toán tử tăng giảm
Các toán tử tăng một (++) và giảm một (- -) cung cấp các tiện lợi tương ứng cho việc cộng thêm 1 vào một biến số hay trừ đi 1 từ một biến số.
#include int main() { int i, k; i = 5; k = i++; printf("i = %d, k = %d\n", i, k); i = 5; k = ++i; printf("i = %d, k = %d\n", i, k); i = 5; k = i--; printf("i = %d, k = %d\n", i, k); i = 5; k = --i; printf("i = %d, k = %d\n", i, k); return 0; }
Kết quả thu được
i = 6, k = 5 i = 6, k = 6 i = 4, k = 5 i = 4, k = 4
Tức là ta có:
++i và –i thì i được tính trước sau đó sẽ lấy kết quả để thực hiện biểu thứci++ và i– thì i được đưa vào thực hiện biểu thức trước sau đó mới tính i
i++ và i– thì i được đưa vào thực hiện biểu thức trước sau đó mới tính i
Toán tử bit trong C
Các toán tử dạng bit cho phép chúng ta thao tác trên từng bit riêng biệt trong các kiểu dữ liệu nguyên thủy. Giả sử A = 60 (= 0011 1100) và B = 13 (= 0000 1101)
Toán tử | Miêu tả | Ví dụ |
Toán tử AND (và) nhị phân 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) sẽ cho kết quả là 12, tức là 0000 1100 | |
Toán tử OR (hoặc) nhị phân sao chép một bit tới kết quả nếu nó tồn tại trong một hoặc hai toán hạng. | (A | B) sẽ cho kết quả là 61, tức là 0011 1101 | |
Toán tử XOR nhị phân sao chép bit mà nó chỉ tồn tại trong một toán hạng mà không phải cả hai. | (A ^ B) sẽ cho kết quả là 49, tức là 0011 0001 | |
Toán tử đảo bit (đảo bit 1 thành bit 0 và ngược lại). | (~A ) sẽ cho kết quả là -61, tức là 1100 0011. | |
<< | Toán tử dịch trái. Giá trị toán hạng trái được dịch chuyển sang trái bởi số các bit được xác định bởi toán hạng bên phải. | A << 2 sẽ cho kết quả 240, tức là 1111 0000 (dịch sang trái hai bit) |
>> | Toán tử dịch phải. Giá trị toán hạng trái được dịch chuyển sang phải bởi số các bit được xác định bởi toán hạng bên phải. | A >> 2 sẽ cho kết quả là 15, tức là 0000 1111 (dịch sang phải hai bit) |
Các toán tử hỗn hợp (Miscellaneous Operators)
Các toán tử đặc biệt dùng trong các trường hợp nhất định như
Trả lại địa chỉ của một biến. | &a sẽ cho địa chỉ thực sự của biến a. | |
Trỏ tới một biến. | *a; sẽ trỏ tới biến a. | |
? : | Biểu thức điều kiện tam phân | Nếu điều kiện là true ? thì giá trị X : Nếu không thì giá trị Y |
Thảo luận
Nếu bạn có bất kỳ khó khăn hay thắc mắc gì về khóa học, đừng ngần ngại đặt câu hỏi trong phần bên dưới hoặc trong mục HỎI & ĐÁP trên thư viện Howkteam.com để nhận được sự hỗ trợ từ cộng đồng.
Nội dung bài viết
Khóa học
Khóa học lập trình C++ căn bản
Hiện nay, C++ đã là cái tên rất quen thuộc trong ngành lập trình. Mặc dù C++ là ngôn ngữ lập trình đã ra đời khá lâu, nhưng không phải ai cũng có cơ hội để tìm hiểu về nó.
Vì vậy, Kteam đã xây dựng lên khóa học LẬP TRÌNH C++ CĂN BẢN để cung cấp một lượng kiến thức về ngôn ngữ C++ nói riêng, và các khái niệm khác trong lập trình nói chung.
Nội dung khóa học sẽ được phân tách một cách chi tiết, nhằm giúp các bạn dễ hiểu và thực hành được ngay. Serial dành cho những bạn chưa có bất kỳ kiến thức gì về lập trình, hoặc những bạn mất căn bản muốn lấy lại kiến thức nền tảng lập trình, cụ thể là C++.
Đánh giá
Bình luận
y += 6; // y = y + 6 cout << “y += 6 = ” << x << endl;
Chỗ này sửa thành in y ra màn hình đúng chứ ạ
e build ctrinh k có lỗi, nhưng debug thì cmd nó k hiển thị ạ @@
vậy nếu những toán tử như x+y=10 thì mình vẫn giữ nguyên hay thay đổi vậy bạn?
Toán tử tăng giảm
-
++
là toán tử tăng-
++i
tương đương với
i = i + 1
-
-
--
là toán tử giảm-
--i
tương đương với
i = i - 1
-
-
Có 2 cách viết
++i
và
i++
nhưng ý nghĩa của chúng khác nhau:-
++i
thì i được tăng trước sau đó sẽ lấy kết quả để thực hiện biểu thức -
i++
thì i được đưa vào thực hiện biểu thức trước sau đó mới tăng i lên.
-
Toán tử so sánh bit trong C++
Toán tử so sánh bit làm việc trên đơn vị bit, tính toán biểu thức so sánh từng bit. Bảng dưới đây về &, |, và ^ như sau:
p & q | p | q | p ^ q |
Giả sử nếu A = 60; và B = 13; thì bây giờ trong định dạng nhị phân chúng sẽ là như sau:
A = 0011 1100
B = 0000 1101
—————–
A&B = 0000 1100
A|B = 0011 1101
A^B = 0011 0001
~A = 1100 0011
Các toán tử so sánh bit được hỗ trợ bởi ngôn ngữ C++ được liệt kê trong bảng dưới đây. Giá sử ta có biến A có giá tri 60 và biến B có giá trị 13, ta có:
Toán tử | Miêu tả | Ví dụ |
Toán tử AND (và) nhị phân 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) sẽ cho kết quả là 12, tức là 0000 1100 | |
Toán tử OR (hoặc) nhị phân sao chép một bit tới kết quả nếu nó tồn tại trong một hoặc hai toán hạng. | (A | B) sẽ cho kết quả là 61, tức là 0011 1101 | |
Toán tử XOR nhị phân sao chép bit mà nó chỉ tồn tại trong một toán hạng mà không phải cả hai. | (A ^ B) sẽ cho kết quả là 49, tức là 0011 0001 | |
Toán tử đảo bit (đảo bit 1 thành bit 0 và ngược lại). | (~A ) sẽ cho kết quả là -61, tức là 1100 0011. | |
<< | Toán tử dịch trái. Giá trị toán hạng trái được dịch chuyển sang trái bởi số các bit được xác định bởi toán hạng bên phải. | A << 2 sẽ cho kết quả 240, tức là 1111 0000 (dịch sang trái hai bit) |
>> | Toán tử dịch phải. Giá trị toán hạng trái được dịch chuyển sang phải bởi số các bit được xác định bởi toán hạng bên phải. | A >> 2 sẽ cho kết quả là 15, tức là 0000 1111 (dịch sang phải hai bit) |
Toán tử số học trong C++
Bảng dưới liệt kê các toán tử số học được hỗ trợ bởi ngôn ngữ C++:
Giả sử biến A giữ giá trị 10, biến B giữ 20 thì:
Toán tử | Miêu tả | Ví dụ |
Cộng hai toán hạng | A + B kết quả là 30 | |
Trừ toán hạng thứ hai từ toán hạng đầu | A – B kết quả là -10 | |
Nhân hai toán hạng | A * B kết quả là 200 | |
Phép chia | B / A kết quả là 2 | |
Phép lấy số dư | B % A kết quả là 0 | |
++ | Toán tử tăng (++), tăng giá trị toán hạng thêm một đơn vị | A++ kết quả là 11 |
— | Toán tử giảm (–), giảm giá trị toán hạng đi một đơn vị | A– kết quả là 9 |
Toán tử tăng (++)
Toán tử tăng (++) cộng toán hạng thêm một đơn vị, và toán tử giảm (–) trừ một đơn vị từ toán hạng. Do vậy:
x=x+1; tương tự x++;
Tương tự như vậy:
x = x-1; tương tự x--;
Cả toán tử tăng và toán tử giảm đều có dạng tiền tố đặt trước hoặc hậu tố theo sau toán hạng. Ví dụ:
x = x+1; có thể được viết dưới dạng ++x; // đây là dạng có tiền tố đặt trước
hoặc dạng:
x++; //dạng hậu tố
Khi một toán tử tăng hay toán tử giảm được sử dụng như là một phần của biểu thức, thì sẽ có một sự khác nhau quan trọng giữa dạng tiền tố và hậu tố. Nếu bạn sử dụng dạng tiền tố thì toán tử tăng hoặc toán tử giảm được thực hiện trước biểu thức, và nếu bạn sử dụng dạng hậu tố thì toán tử tăng hoặc toán tử giảm được thực hiện sau khi biểu thức được ước lượng.
Ví dụ
Ví dụ sau giải thích giúp bạn sự khác nhau này:
include
using namespace std;main(){int a = 21;int c ;// Gia tri cua a se khong duoc tang truoc khi duoc gan.c = a++;cout << “1, Gia tri cua a++ la: ” << c << endl ;// Sau khi gia tri cua a duoc tang thi:cout << “2, Gia tri cua a la: ” << a << endl ;// Gia tri cua a se duoc tang truoc khi duoc gan.c = ++a;cout << “3, Gia tri cua ++a la: ” << c << endl ;return 0;}
Chạy chương trình C++ trên sẽ cho kết quả như hình sau:
Toán tử giảm (–) trong C++
Toán tử tăng (++) cộng toán hạng thêm một đơn vị, và toán tử giảm (–) trừ một đơn vị từ toán hạng. Do vậy:
x = x+1;la tuong tux++;
Tương tự như vậy:
x = x-1;la tuong tux–;
Cả toán tử tăng và toán tử giảm đều có dạng tiền tố đặt trước hoặc hậu tố theo sau toán hạng. Ví dụ:
x = x+1;co the duoc viet duoi dang++x; // day la dang co tien to (prefix) dat truoc
hoặc dạng:
x++; // la dang voi hau to (postfix) dat sau
Khi một toán tử tăng hay toán tử giảm được sử dụng như là một phần của biểu thức, thì sẽ có một sự khác nhau quan trọng giữa dạng tiền tố và hậu tố. Nếu bạn sử dụng dạng tiền tố thì toán tử tăng hoặc toán tử giảm được thực hiện trước biểu thức, và nếu bạn sử dụng dạng hậu tố thì toán tử tăng hoặc toán tử giảm được thực hiện sau khi biểu thức được ước lượng.
Ví dụ
Ví dụ sau giải thích giúp bạn sự khác nhau này:
include
using namespace std;main(){int a = 21;int c ;// Gia tri cua a se khong duoc tang truoc khi duoc gan.c = a++;cout << “1, Gia tri cua a++ la: ” << c << endl ;// Sau khi gia tri cua a duoc tang thi:cout << “2, Gia tri cua a la: ” << a << endl ;// Gia tri cua a se duoc tang truoc khi duoc gan.c = ++a;cout << “3, Gia tri cua ++a la: ” << c << endl ;return 0;}
Chạy chương trình C++ trên sẽ cho kết quả như hình sau:
Có thể bạn quan tâm
Trong ngôn ngữ C, có nhiều loại toán tử khác nhau để thực hiện các phép tính và thao tác trên dữ liệu. Dưới đây là một số toán tử cơ bản trong C:
1. Toán tử toán học:
– Toán tử cộng (+): Thực hiện phép cộng giữa hai toán hạng.
– Toán tử trừ (-): Thực hiện phép trừ giữa hai toán hạng.
– Toán tử nhân (*): Thực hiện phép nhân giữa hai toán hạng.
– Toán tử chia (/): Thực hiện phép chia giữa hai toán hạng.
– Toán tử chia lấy dư (%): Thực hiện phép chia lấy phần dư giữa hai toán hạng.
Ví dụ:
int a = 10; int b = 5; int sum = a + b; // sum = 15 int diff = a – b; // diff = 5 int product = a * b; // product = 50 int quotient = a / b; // quotient = 2 int remainder = a % b; // remainder = 0
2. Toán tử gán:
Toán tử gán (=): Gán giá trị của biểu thức bên phải cho biến bên trái.
Ví dụ:
int a = 10; int b = 5; a = b; // a = 5
3. Toán tử so sánh:
– Toán tử bằng (==): Kiểm tra xem hai giá trị có bằng nhau không.
– Toán tử khác (!=): Kiểm tra xem hai giá trị có khác nhau không.
– Toán tử lớn hơn (>): Kiểm tra xem giá trị bên trái có lớn hơn giá trị bên phải không.
– Toán tử nhỏ hơn (<): Kiểm tra xem giá trị bên trái có nhỏ hơn giá trị bên phải không.
– Toán tử lớn hơn hoặc bằng (>=): Kiểm tra xem giá trị bên trái có lớn hơn hoặc bằng giá trị bên phải không.
– Toán tử nhỏ hơn hoặc bằng (<=): Kiểm tra xem giá trị bên trái có nhỏ hơn hoặc bằng giá trị bên phải không.
Ví dụ:
int a = 10; int b = 5; if (a == b) { printf(“a is equal to b”); } if (a > b) { printf(“a is greater than b”); }
4. Toán tử logic:
Bao gồm các toán tử && (AND), || (OR) và ! (NOT).
Ví dụ:
int a = 5, b = 3; if (a > 3 && b < 10) { printf(“Cả hai điều kiện đều đúng.\n”); } if (a < 3 || b > 10) { printf(“Một trong hai điều kiện đúng.\n”); } if (!(a > 3 && b < 10)) { printf(“Phủ định của cả hai điều kiện đều đúng.\n”); }
5. Toán tử tăng/giảm:
Bao gồm toán tử ++ (tăng lên một đơn vị) và — (giảm đi một đơn vị).
Ví dụ:
int a = 5; a++; // a = 6 a–; // a = 5
6. Các toán tử khác:
– Toán tử tăng (++): Toán tử này được sử dụng để tăng giá trị của biến lên 1. Nó có thể được sử dụng trước (prefix) hoặc sau (postfix) biến.
Ví dụ:
int x = 5; ++x; // x tăng lên 1 và giờ đây có giá trị là 6 x++; // x tăng lên 1 và có giá trị là 7, nếu được sử dụng trong biểu thức thì giá trị trả về trước khi tăng lên.
– Toán tử giảm (–): Tương tự như toán tử tăng, toán tử này được sử dụng để giảm giá trị của biến đi 1. Nó cũng có thể được sử dụng trước (prefix) hoặc sau (postfix) biến.
Ví dụ:
int x = 5; –x; // x giảm đi 1 và có giá trị là 4 x–; // x giảm đi 1 và có giá trị là 3, nếu được sử dụng trong biểu thức thì giá trị trả về trước khi giảm đi.
– Toán tử kích thước của biến (sizeof): Toán tử này được sử dụng để trả về kích thước của một biến hoặc kiểu dữ liệu trong byte.
Ví dụ:
int x; printf(“Kich thuoc cua bien int la: %lu byte”, sizeof(x));
– Toán tử điều kiện (?:): Toán tử này được sử dụng để kiểm tra một điều kiện và trả về giá trị khác nhau tùy thuộc vào kết quả của điều kiện đó. Nó được sử dụng thay cho câu lệnh if-else trong một số trường hợp. Cú pháp:
expression1 ? expression2 : expression3
Ví dụ:
int x = 5, y = 10; int max = (x > y) ? x : y; // Nếu x > y thì trả về x, ngược lại trả về y
1.Toán Tử Gán
Toán tử gán (dấu =) được sử dụng trong các bài học trước khi bạn muốn gán giá trị cho biến
Cú pháp : X = Y
Ý nghĩa : Gán giá trị của toán hạng Y cho toán hạng X
Ví dụ :
#include
int main(){ int n = 28; int m = n; int p = m; printf(“%d %d %d\n”, n, m, p); return 0; }
2. Toán Tử Toán Học
Toán tử toán học bao gồm các phép toán bạn thường sử dụng : +, -, *, /, %. Trong lập trình bạn cần chú ý phép nhân sẽ là dấu *, phép chia là dấu / và phép chia dư là %.
Thứ tự ưu tiên các toán tử này trong biểu thức đó là nhân chia và chia dư trước, cộng trừ sau, cùng mức ưu tiên thì thực hiện từ trái qua phải. Tuy nhiên bạn dùng thêm đóng mở ngoặc vì nó có mức độ ưu tiên cao nhất, sẽ đảm bảo được biểu thức của bạn được tính toán như bạn mong muốn.
Toán tử | Ý nghĩa | Ví dụ |
Phép cộng | int n = 100 + 200; // n = 300 | |
Phép trừ | int n = 200 – 100; // n = 100 | |
Phép nhân | int n = 28 * 2; // n = 56 | |
Phép chia | int n = 50 / 2; // n = 25 | |
Phép chia dư | int n = 20 % 3; // n = 2 |
Sau khi học các toán tử toán học này bạn có thể xây dựng được những chương trình tính toán đơn giản rồi.
Ví dụ 1. Nhập chiều dài, rộng và in ra chu vi, diện tích của hình chữ nhật
#include
int main(){ int dai, rong; scanf(“%d %d”, &dai, &rong); int chuvi = 2 * (dai + rong); int dientich = dai * rong; printf(“%d %d”, chuvi, dientich); return 0; }
Ví dụ 2 : Nhập bán kính hình tròn, in ra chu vi và diện tích lấy 2 chữ số phần thập phân
#include
int main(){ double R; scanf(“%lf”, &R); double chuvi = 2 * 3.14 * R; double dientich = 3.14 * R * R; printf(“%.2lf %.2lf\n”, chuvi, dientich); return 0; }
Chú ý 1 : Chia nguyên và chia lấy phần thập phân
- Nếu bạn lấy 2 số nguyên (int, long long) và chia cho nhau thì phép chia đó là phép chia nguyên, phần thập phân sẽ tự bị loại bỏ
- Nếu bạn chia 2 số thực cho nhau hoặc 1 số nguyên với 1 số thực thì phép chia mới giữ lại phần thập phân.
Ví dụ 3 : Phép chia nguyên
Mặc dù bạn đã dùng số float để lưu thương nhưng kết quả vẫn chỉ là 3.00, vì khi bạn chia a / b thì kết quả đã là 3 rồi.
#include
int main(){ int a = 10, b = 3; int thuong1 = a / b; printf(“%d\n”, thuong1); float thuong2 = a / b; printf(“%.2f\n”, thuong2); return 0; } Output : 3 3.00
Ví dụ 4 : Phép chia muốn lấy phần thập phân có 2 cách xử lý
- Ép kiểu số chia hoặc bị chia sang số thực
- Nhân số bị chia với 1.0 (mình thích cách này hơn), cách này ngầm biến số bị chia thành 1 số thực trong quá trình tính toán
#include
int main(){ int a = 10, b = 3; float thuong1 = (float)a / b; printf(“%.2f\n”, thuong1); float thuong2 = 1.0 * a / b; printf(“%.2f\n”, thuong2); return 0; } Output : 3.33 3.33
Chú ý 2 : Nhân 2 số nguyên bị tràn dữ liệu
Đầu tiên bạn cần biết khi bạn dùng 2 số int và nhân với nhau thì tích của 2 số này có thể vượt giới hạn của số int, ví dụ a = 106 và b = 106 thì tích của 2 số là 1012 vượt giới hạn của số int và sẽ bị tràn. Để xử lý tình huống này bạn có thể lưu 2 số này ở kiểu long long, hoặc ít nhất 1 trong 2 số ở kiểu long long. Cách thứ 2 bạn có thể ép kiểu khi nhân 2 số.
Ví dụ 5 : Nhân 2 số int bị tràn và cách xử lý
#include
int main(){ int a = 1000000, b = 1000000; long long tich1 = a * b; printf(“%lld\n”, tich1); //Ép kiểu long long tich2 = (long long) a * b; printf(“%lld\n”, tich2); //Nhân với số 1ll = 1 long long; long long tich3 = 1ll * a * b; printf(“%lld\n”, tich3); return 0; } Output : -727379968 1000000000000 1000000000000
Sau khi học xong toán tử toán học, các bạn có thể sử dụng thêm các toán tử gán kết hợp toán tử toán học :
Toán tử | Ví dụ | Ý nghĩa |
+= | a += b | a = a + b |
-= | a -= b | a = a – b |
/= | a /= b | a = a / b |
*= | a *= b | a = a * b |
%= | a %= b | a = a % b |
3.Toán Tử So Sánh
Các toán tử so sánh thường được sử dụng để kiểm tra điều kiện, các toán tử này sẽ trả về giá trị đúng hoặc sai khi bạn so sánh 2 toán hạng với nhau.
Toán tử | Ý nghĩa | Ví dụ |
So sánh lớn hơn | a > b | |
>= | Lớn hơn hoặc bằng | a >= b |
So sánh nhỏ hơn | a < b | |
<= | Nhỏ hơn hoặc bằng | a <= b |
!= | So sánh khác | a != b |
== | So sánh bằng | a == b |
Một vài ví dụ về kết quả của toán tử so sánh :
Ví dụ | Kết quả |
20 > 10 | Đúng |
5 <= 15 | Đúng |
30 < 50 | Sai |
5 <= 5 | Đúng |
10 != 10 | Sai |
10 == 10 | Đúng |
Ví dụ : Bạn cũng có thể sử dụng code để in ra giá trị của các phép so sánh, giá trị đúng tương ứng với 1, sai tương ứng với 0
#include
int main(){ printf(“%d “, 100 > 50); printf(“%d “, 20 <= 30); printf(“%d “, 80 >= 100); printf(“%d “, 20 < 10); printf(“%d “, 10 != 20); printf(“%d “, 10 == 10); return 0; } Output : 1 1 0 0 1 1
4.Toán Tử Logic
Có 3 toán tử logic là AND (&&) , OR (||) , NOT (!), các toán tử logic này được sử dụng để kết hợp nhiều toán hạng (biểu thức so sánh hoặc giá trị đúng sai) và sẽ trả về đúng hoặc sai.
Phần này bạn cần xem lại cách hoạt động của 3 cổng logic trên nếu chưa nắm vững.
Chú ý : Trong C thì tất cả các giá trị khác 0 được coi là giá trị đúng.
Toán tử | Ý nghĩa | Cách hoạt động | Ví dụ |
&& | Toán tử AND (Và) | Cho giá trị đúng khi mọi toán hạng có giá trị đúng, sai trong các trường hợp còn lại | (10 < 20) && (20 == 20) : Đúng |
|| | Toán tử OR (Hoặc) | Cho giá trị sai khi mọi toán hạng có giá trị sai, đúng trong các trường hợp còn lại | (10 > 30) && (30 == 30) : Đúng |
Toán tử NOT (Phủ định) | Phủ định của đúng là sai, phủ định của sai là đúng | !(20 == 20) : Sai |
Ví dụ : Bạn có thể sử dụng code để in ra giá trị của các biểu thức
#include
int main(){ //true && true = true int res1 = (10 < 20) && (20 >= 20); //true && true && false = false int res2 = (10 < 20) && (20 == 20) && (5 > 10); //false || false || true = true int res3 = (10 > 20) || (20 < 10) || (5 == 5); // !(true) = false int res4 = !(10 < 20); //!(true && true) = !(true) = false int res5 = !((20 < 30) && (30 > 10)); printf(“%d %d %d %d %d\n”, res1, res2, res3, res4, res5); return 0; } Output : 1 0 1 0 0
5. Toán Tử Tăng Giảm
Để tăng giảm giá trị của biến lên 1 đơn vị bạn có thể sử dụng toán từ ++, hoặc giảm giá trị của biến đi 1 đơn vị bằng toán tử — .
- ++a : Tăng trước
- a++ : Tăng sau
- –a : Giảm trước
- a– : Giảm sau
Ví dụ 1:
#include
int main(){ int n = 100; ++n; // n = 101 printf(“%d “, n); n++; // n = 102 printf(“%d “, n); n–; // n = 101 printf(“%d “, n); –n; // 100 printf(“%d”, n); return 0; } Output : 101 102 101 100
Ví dụ 2 : Sự khác nhau giữa n++ và ++n, tương tư như n– và –n
n++ : Giá trị của n sẽ được sử dụng, sau đó n mới được tăng lên 1 đơn vị
++n : Giá trị của n sẽ được tăng lên luôn, sau đó sử dụng giá trị mới của n
#include
int main(){ int n = 100; printf(“%d “, n++); // In 100 sau đó tăng n lên 101 printf(“%d “, n); // 101 printf(“%d “, ++n); // tăng n lên 102 sau đó in 102 printf(“%d”, n); // 102 return 0; } Output : 100 101 102 102
6. Toán Tử Điều Kiện (3 Ngôi)
Cú pháp : [Biểu thức so sánh] ? [Giá trị trả về 1] : [Giá trị trả về 2];
Ý nghĩa : Phần thứ nhất trong toán tử này sẽ có giá trị đúng hoặc sai, nếu phần này có giá trị đúng thì biểu thức sẽ trả về giá trị 1, ngược lại nếu phần này có giá trị sai thì biểu thức sẽ trả về giá trị 2
Ví dụ : int n = 10 < 20 ? 100 : 200; thì n sẽ có giá trị là 100, vì 10 < 20 có giá trị là đúng nên n được gán giá trị là 100 thay vì 200
#include
int main(){ int n = 10 < 20 ? 28 : 82; printf(“%d\n”, n); n = (50 < 50) && (10 > 3) ? 28 : 82; printf(“%d\n”, n); return 0; }
Xem thêm bài giảng của mình về Toán tử trong C :
Trong bài này chúng ta sẽ học cách sử dụng các toán tử trong lập trình C. Toán tử là gì, có các loại toán tử nào chúng ta thường hay sử dụng. Đây cũng là một phần rất quan trọng, các bạn nên học thật kĩ nhé!
Mục Lục
Kết
Nắm rõ đặc tính và cách sử dụng các toán tử trong lập trình C là một việc bất kì lập trình viên nào đều phải học. Đây là một kiến thức rất quan trọng, xuyên xuốt quá trình học lập trình.Hi vọng các bạn đã hiểu về nó, tiếp tục tới bài tiếp theo của Serie Học lập trình C từ A đến Z
Nếu thấy có ích hãy chia sẻ bài viết và tham gia nhóm Nghiện Lập Trình để giao lưu và học hỏi nhé
Toán tử logic trong C
Bảng dưới đây hiển thị tất cả các toán tử logic được hỗ trợ bởi Ngôn ngữ C. Giả sử biến A giữ giá trị 1 và biến B giữ giá trị 0, thì khi đó:
Toán tử | Miêu tả | Ví dụ |
&& | Được gọi là toán tử Logic AND (Và). Nếu cả hai toán hạng đều có giá trị khác 0 thì điều kiện trở lên true. | (A && B) là false. |
|| | Được gọi là toán tử Logic OR (Hoặc). Nếu một trong hai toán hạng có giá trị khác không thì điều kiện trở lên true. | (A || B) là true. |
Được gọi là toán tử Logic NOT (Phủ định). Sử dụng để đảo ngược trạng thái logic của toán hạng đó. Nếu toán hạng là true thì phủ định nó là false. | !(A && B) là true. |
Toán tử gán
Toán tử gán được sử dụng để lưu trữ giá trị cho 1 biến nào đó.
Ví dụ:
#include int main() { int x; x = 5; printf("x = 5 =&gt x = %d\n", x); x += 5; printf("x += 5 =&gt x = %d\n", x); x -= 5; printf("x -= 5 =&gt x = %d\n", x); x *= 5; printf("x *= 5 =&gt x = %d\n", x); x /= 5; printf("x /= 5 =&gt x = %d\n", x); return 0; }
Kết quả thu được:
x = 5 =&gt x = 5 x += 5 =&gt x = 10 x -= 5 =&gt x = 5 x *= 5 =&gt x = 25 x /= 5 =&gt x = 5
Toán tử trong C
- NameViet Anh
Định nghĩa toán tử trong [Wikipedia]:
Trong toán học, một toán tử (tiếng Anh operator, phân biệt với operation – phép toán) là một hàm, thông thường có một vai trò quan trọng trong một lĩnh vực nào đấy. Chẳng hạn trong đại số tuyến tính có “toán tử tuyến tính” (linear operator). Trong giải tích có “toán tử vi phân” (differential operator)… Thông thường, một “toán tử” là một hàm tác động lên các hàm khác; hoặc nó có thể là tổng quát hóa của một hàm, như trong đại số tuyến tính.
Các kiểu toán tử trong C:
- Toán tử số học
- Toán tử quan hệ
- Toán tử logic
- Toán tử so sánh bit
- Toán tử gán
- Toán tử hỗn hợp
Toán tử thao tác bit ( Bitwise Operators )
Toán tử thao tác bit làm việc trên đơn vị bit, tính toán biểu thức theo từng bit
Phép đảo và dịch
Có 3 toán tử 1 ngôi thao tác theo bit:
- ~ : Toán tử đảo, đảo ngược bit 0 thành 1 và ngược lại
- <<: Toán tử dịch trái. Giá trị toán hạng trái được dịch chuyển sang trái bởi số các bit được xác định bởi toán hạng bên phải
- >>: Toán tử dịch phải. Giá trị toán hạng trái được dịch chuyển sang phải bởi số các bit được xác định bởi toán hạng bên phải
VD: A = 0011 1100
~A = 1100 0011: tương ứng với – 61
A<<2 = 1111 0000: tương ứng với 240
A>>2 = 0000 1111: tương ứng với 15
Ngoài ra toán tử dịch 1 bit còn được viết gọn như sau: <
>A
Phép toán logic
Bảng dưới đây về toán tử thao tác bit 2 ngôi là & (AND) , | (OR), và ^ (NOR) như sau:
A & B | A | B | A ^ B |
VD: Giả sử nếu A = 60; và B = 13; thì bây giờ trong định dạng nhị phân chúng sẽ là như sau:
A = 0011 1100
B = 0000 1101
—————–
A&B = 0000 1100: tương ứng là 12
A|B = 0011 1101 : tương ứng là 12
A^B = 0011 0001: tương ứng là 49
#include
int main() { printf(“Toan tu thao tac bit \n\n”); int a = 60, b = 13; printf(” Bitwise AND operation %d & %d : %d\n”,a,b,a&b); printf(” Bitwise OR operation %d | %d : %d\n”,a,b,a|b); printf(” Bitwise XOR operation %d ^ %d : %d\n”,a,b,a^b); printf(” Bitwise ONE’S COMPLEMENT ~ %d operation : %d\n”,a,~a); return 0; }
Kết quả
Toán tử gán trong C
Toán tử gán dùng để gán một giá trị vào một biến và có thể gán nhiều giá trị cho nhiều biến cùng một lúc.
Toán tử | Miêu tả | Ví dụ |
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. | C = A + B sẽ gán giá trị của A + B vào trong C | |
+= | 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. | C += A tương đương với C = C + A |
-= | 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. | C -= A tương đương với C = C – A |
*= | 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. | C *= A tương đương với C = C * A |
/= | 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. | C /= A tương đương với C = C / A |
%= | 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. | C %= A tương đương với C = C % A |
<<= | Dịch trái toán hạng trái sang số vị trí là giá trị toán hạng phải. | C <<= 2 tương đương với C = C << 2 |
>>= | Dịch phải toán hạng trái sang số vị trí là giá trị toán hạng phải. | C >>= 2 tương đương với C = C >> 2 |
&= | Phép AND bit | C &= 2 tương đương với C = C & 2 |
^= | Phép OR loại trừ bit | C ^= 2 tương đương với C = C ^ 2 |
|= | Phép OR bit. | C |= 2 tương đương với C = C | 2 |
Ép kiểu
Đôi khi chúng ta cần chuyển đổi giá trị một biểu thức sang kiểu dữ liệu khác. Ví dụ trong trường hợp ta muốn thực hiện phép toán chia lấy phần dư của 2 số nguyên, nhưng lại được lưu trong 2 biến kiểu float, ta không thể áp dụng trực tiếp toán tử cho 2 biến đó. Bạn chạy chương trình thế này sẽ báo lỗi:
#include
int main(void) { int a = 5, c; float b = 6; c = a % (int)b; printf("%d", c); return 0; }
Vì thế cần ép kiểu theo cú pháp:
(
để lấy giá trị từ biến b, đổi sang số nguyên để thực hiện phép . Code đúng như sau:
#include
int main(void) { int a = 5, c; float b = 6; c = a % (int)b; printf("%d", c); return 0; }
Toán tử trong lập trình C
Toán tử trong lập trình C là gì? Cách dùng toán tử trong ngôn ngữ lập trình C như thế nào? Hãy cùng Quantrimang.com tìm hiểu nhé!
Toán tử là một phần quan trọng trong ngôn ngữ lập trình C. Nó là một biểu tượng hay ký hiệu hoạt động trên một giá trị hoặc một biến. Ví dụ, là một toán tử để triển khai phép cộng. Ví dụ:
int myNum = 100 + 50;
Mặc dù toán tử + thường được dùng để cộng hai giá trị với nhau, như ở ví dụ trên, nó cũng có thể được dùng để kết hợp một biến và một giá trị hoặc hai biến. Ví dụ:
int sum1 = 100 + 50; // 150 (100 + 50) int sum2 = sum1 + 250; // 400 (150 + 250) int sum3 = sum2 + sum2; // 800 (400 + 400)
C chia toán tử thành các nhóm sau:
- Toán tử số học
- Toán tử gán
- Toán tử so sánh
- Toán tử logic
- Toán tử so sánh bit
C có hàng loạt toán tử cho bạn thực hiện những phép toán hay phương trình khác nhau. Dưới đây là những điều bạn cần biết về cách triển khai toán tử trong ngôn ngữ lập trình C.
Bài hướng dẫn sẽ giải thích toán tử số học, quan hệ, logic, so sánh bit, gán và các toán tử khác, từng loại một.
Nội dung
Để đọc hiểu bài này tốt nhất các bạn nên có kiến thức cơ bản về các phần:
- BIẾN TRONG C++ (Variables)
- CÁC KIỂU DỮ LIỆU CƠ BẢN TRONG C++ (Integer, Floating point, Character, Boolean)
- NHẬP XUẤT DỮ LIỆU TRONG C++ (Input and Output)
Trong bài ta sẽ cùng tìm hiểu các vấn đề:
- Tổng quan về toán tử
- Toán tử số học trong C++
- Toán tử tăng giảm trong C++
- Toán tử gán số học trong C++
Thứ tự ưu tiên toán tử trong C++
Thứ tự ưu tiên toán tử trong C++ xác định cách biểu thức được tính toán. Ví dụ, toán tử nhân có quyền ưu tiên hơn toán tử cộng, và nó được thực hiện trước.
Ví dụ, x = 7 + 3 * 2; ở đây, x được gán giá trị 13, chứ không phải 20 bởi vì toán tử * có quyền ưu tiên cao hơn toán tử +, vì thế đầu tiên nó thực hiện phép nhân 3 * 2 và sau đó thêm với 7.
Bảng dưới đây liệt kê thứ tự ưu tiên của các toán tử. Các toán tử với quyền ưu tiên cao nhất xuất hiện trên cùng của bảng, và các toán tử có quyền ưu tiên thấp nhất thì ở bên dưới cùng của bảng. Trong một biểu thức, các toán tử có quyền ưu tiên cao nhất được tính toán đầu tiên.
Loại | Toán tử | Thứ tự ưu tiên |
Postfix | () [] -> . ++ – – | Trái sang phải |
Unary | + – ! ~ ++ – – (type)* & sizeof | Phải sang trái |
Tính nhân | * / % | Trái sang phải |
Tính cộng | + – | Trái sang phải |
Dịch chuyển | << >> | Trái sang phải |
Quan hệ | < <= > >= | Trái sang phải |
Cân bằng | == != | Trái sang phải |
Phép AND bit | Trái sang phải | |
Phép XOR bit | Trái sang phải | |
Phép OR bit | Trái sang phải | |
Phép AND logic | && | Trái sang phải |
Phép OR logic | || | Trái sang phải |
Điều kiện | ?: | Phải sang trái |
Gán | = += -= *= /= %=>>= <<= &= ^= |= | Phải sang trái |
Dấu phảy | Trái sang phải |
Theo Tutorialspoint
Bài trước: Lớp lưu trữ (Storage Class) trong C/C++
Bài tiếp: Vòng lặp trong C++
Toán tử số học
Giả sử khai báo:
int A=5, B=6; float C=1.2;
Toán tử | Miêu tả | Ví dụ |
Cộng 2 toán hạng | A + B sẽ cho kết quả là 11 | |
Trừ 2 toán hạng | A – B sẽ cho kết quả là -1 | |
Nhân 2 toán hạng | A * B sẽ cho kết quả là 30 | |
Chia 2 toán hạng | B / A sẽ cho kết quả là 0 (2 toán hạng đều là số nguyên thì kết quả là phần nguyên của thương) A / C sẽ cho kết quả là 4.166667 (1 trong 2 toán hạng là số thực dấu phẩy động thì thương là số thực dấu phẩy động) | |
Chia lấy phần dư | B % A sẽ cho kết quả là 1 |
Toán tử gán
Sử dụng dấu cho việc gán giá trị vào biến.
Ví dụ:
int a,b,c; int main(void) { a = 5; // Gán cho a giá trị là 5 c = b = a; // Gán cho b và c giá trị bằng giá trị của a return 0; }
Các toán tử gán mở rộng:
Toán tử | Ví dụ | Tương đương với |
Toán tử Logic (Logic Operators) hay so sánh logic
Toán tử logic là toán tử sử dụng các mệnh đề logic để so sánh 2 phần tử logic, giá trị trả về là logic (
true
hoặc
false
tương ứng với
1 hoặc 0)
Các toán tử này thường được sử dụng để nối các điều kiện trong các lệnh so sánh như if, case hoặc while, for.
-
Toán tử
&&
: là toán tử AND, trả về
true
khi và chỉ khi tất cả các toán hạng đều đúng. -
Toán tử
||
: là toán tử OR, trả về
true
khi có ít nhất 1 toán hạng đúng. - Toán tử : là toán tử NOT, phủ định giá trị của toán hạng.
AND
(a > 0 && a < 10). Nếu a lớn hơn 0 và a < 10 thì ra giá trị true, các giá trị còn lại sẽ ra giá trị false. Hoặc nói đơn giản là thỏa mãn cả 2 điều kiện
#include
int main(){ int a; printf(“nhap a = “); scanf(“%d”, &a); printf(“\n%d”, (a > 0 && a < 10)); }
Kết quả
OR
(a > 15 || a < 10). Nếu a lớn hơn 5 hoặc a = 10 thì true, nếu không thỏa mãn cả 2 điều kiện thì là false
#include
int main(){ int a; printf(“nhap a = “); scanf(“%d”, &a); printf(“\n%d”, (a > 15 || a < 10)); }
Kết quả
NOT
!a. Sẽ trả về 0 nếu a = 1, trả về 1 nếu a = 0. Nó đơn giản chỉ là đảo ngược. Lưu ý khi ta sử dụng NOT với các số lớn hơn 1 thì kết quả cũng tương tư.Ví dụ: nếu a = 255 thì !a = 0, nếu a = 0 thì !a sẽ bằng 1.
Ví dụ
Bạn thử ví dụ sau để hiểu tất cả các toán tử logic có sẵn trong Ngôn ngữ C:
#include
main() { int a = 10; int b = 25; int c ; if ( a && b ) { printf(“1. Dieu kien la true\n” ); } if ( a || b ) { printf(“2. Dieu kien la true\n” ); } /* thay doi gia tri cua a va b */ a = 0; b = 5; if ( a && b ) { printf(“3. Dieu kien la true\n” ); } else { printf(“3. Dieu kien la khong true\n” ); } if ( !(a && b) ) { printf(“4. Dieu kien la true\n” ); } printf(“===========================\n”); printf(“VietJack chuc cac ban hoc tot! \n”); }
Biên dịch và thực thi chương trình C trên sẽ cho kết quả sau:
Kết quả là hợp lý đấy chứ. Nếu thấy không hợp lý, bạn đọc kỹ lại nhé!!! (Trước hết bạn cũng nên tìm hiểu lệnh IF-ELSE trong C nữa.)
Đã có app VietJack trên điện thoại, giải bài tập SGK, SBT Soạn văn, Văn mẫu, Thi online, Bài giảng….miễn phí. Tải ngay ứng dụng trên Android và iOS.
Các bạn có thể mua thêm khóa học JAVA CORE ONLINE VÀ ỨNG DỤNG cực hay, giúp các bạn vượt qua các dự án trên trường và đi thực tập Java. Khóa học có giá chỉ 300K, nhằm ưu đãi, tạo điều kiện cho sinh viên cho thể mua khóa học.
Nội dung khóa học gồm 16 chuơng và 100 video cực hay, học trực tiếp tại https://www.udemy.com/tu-tin-di-lam-voi-kien-thuc-ve-java-core-toan-tap/ Bạn nào có nhu cầu mua, inbox trực tiếp a Tuyền, cựu sinh viên Bách Khoa K53, fb: https://www.facebook.com/tuyen.vietjack
Follow facebook cá nhân Nguyễn Thanh Tuyền https://www.facebook.com/tuyen.vietjack để tiếp tục theo dõi các loạt bài mới nhất về Java,C,C++,Javascript,HTML,Python,Database,Mobile…. mới nhất của chúng tôi.
Các bài học lập trình C phổ biến khác tại VietJack:
- Bài 1: Tổng quan ngôn ngữ lập trình C
- Bài 2: Hướng dẫn cài đặt C
- Bài 3: Biến trong C
- Bài 4: Các kiểu dữ liệu trong C
- Bài 5: Toán tử trong C
- Bài 6: Định danh trong C
- Bài 7: Câu lênh điều kiện if, if-else và switch trong C
- Bài 8: Vòng lặp trong C – Câu lệnh for, while, do…while
- Bài 9: Câu lệnh break, continue goto và hàm exit() trong C
- Bài 10: Mảng trong C
- Bài 11: Con trỏ trong C
- Bài 12: Đọc ghi file trong C
- Bài 13: Chuỗi trong C
- Bài 14: Struct trong C
Bài 5: Toán tử trong C – Học lập trình C cơ bản
Đăng bởi: Admin | Lượt xem: 4481 | Chuyên mục: C/C++
Toán tử là một biểu tượng mà nói với trình biên dịch thực hiện một phép toán học nhất định hoặc thao tác hợp lý. Ngôn ngữ C có sẵn rất nhiều toán tử và cung cấp các kiểu toán tử sau đây:
Toán tử số học trong C++ (Arithmetic operators)
Toán tử 1 ngôi số đối (Unary)
Toán tử 1 ngôi (Unary) là toán tử chỉ có 1 toán hạng trong biểu thức.
Bảng bên dưới mô tả 2 toán tử 1 ngôi số đối trong C++, giả sử x = 69:
Chú ý 1:
Unary plus (+) trả về giá trị của chính toán hạng đó, bạn sẽ không cần phải sử dụng toán tử này vì nó không cần thiết.
Unary minus (-) trả về số đối của toán hạng đó.
Chú ý 2:
Nên đặt 2 toán tử một ngôi số đối ngay trước toán hạn để dễ dàng phân biệt với các toán tử số học khác. Ví dụ: -a, không nên – a.
Tránh nhầm lẫn giữa toán tử 1 ngôi (+, -) và toán tử 2 ngôi (+, -). Ví dụ: x = 6 – -9.
Toán tử số học 2 ngôi (Binary)
Toán tử 2 ngôi (Binary) là toán tử có 2 toán hạng trong biểu thức. Có 5 toán tử số học 2 ngôi trong C++.
Bảng bên dưới mô tả các toán tử số học trong C++, giả sử x = 6, y = 9:
Toán tử cộng (+), trừ (-), nhân (*) hoạt động một cách bình thường như trong toán học.
Về toán tử chia sẽ được phân thành 2 dạng:
- Chia lấy phần nguyên (/): trả về phần nguyên của phép chia. Ví dụ: 9 / 6 = 1 dư 3
- Chia lấy phần dư (%): trả về phần dư của phép chia. Ví dụ: 9 % 6 = 3
Ví dụ:
#include
using namespace std; int main() { // count holds the current number to print int count = 1; // start at 1 // Loop continually until we pass number 100 while (count <= 100) { // if count is evenly divisible by 10, print a new line if (count % 2 == 0) cout << count << "\t"; // print the current number // if count is evenly divisible by 20, print a new line if (count % 10 == 0) cout << "\n"; count = count + 1; // go to next number } // end of while return 0; }
Outputs:
Chú ý khi thực hiện phép chia lấy phần nguyên (/):
Nếu 2 toán hạng là số nguyên sẽ cho kết quả là số nguyên. Ví dụ: 9 / 6 = 1
Nếu 1 trong 2, hoặc cả 2 toán hạng là số chấm động thì sẽ cho kết quả là số chấm động (Ví dụ: 9.0 / 6 = 9 / 6.0 = 9.0/ 6.0 = 1.5). Bạn có thể ép kiểu hoặc nhân một trong 2 toán hạng với 1.0 để có kết quả là một số chấm động.
Ví dụ:
#include
using namespace std; int main() { int x = 9; int y = 6; cout << "int % int = " << x % y << "\n"; cout << "int / int = " << x / y << "\n"; cout << "double / int = " << (1.0 * x) / y << "\n"; cout << "int / double = " << x / (1.0 * y) << "\n"; cout << "double / double = " << (1.0 * x) / (1.0 * y) << "\n"; cout << "double / int = " << static_cast
(x) / y << "\n"; cout << "int / double = " << x / static_cast
(y) << "\n"; cout << "double / double = " << static_cast
(x) / static_cast
(y) << "\n"; return 0; }
Outputs:
Toán tử 1 ngôi tăng, giảm (Increment/decrement operators)
Toán tử 1 ngôi tăng, giảm khá phổ biến trong C/C++. Bảng bên dưới mô tả toán tử 1 ngôi tăng, giảm:
Tiền tố (Prefix): tăng hoặc giảm giá trị của biến x, sau đó x được sử dụng để tính toán.
Ví dụ:
#include
using namespace std; int main() { int x = 69; int y = ++x; // x is now equal to 70, and 70 is assigned to y cout << x << endl; // x = 70 cout << y << endl; // y = 70 return 0; }
Outputs:
Hậu tố (Postfix): sử dụng x để tính toán, sau đó tăng hoặc giảm giá trị của biến x. Đối với trường hợp này, performance sẽ giảm vì compiler phải thực hiện nhiều hơn. Đầu tiên, compiler sẽ tạo một bản sao của x, sau đó biến x được tăng hoặc giảm, mọi tính toán trong biểu thức sẽ sử dụng giá trị của bản sao và bản sao sẽ được xóa sau khi sử dụng.
Ví dụ:
#include
using namespace std; int main() { int x = 69; int y = x++; // x is now equal to 70, and 69 is assigned to y cout << x << endl; // x = 70 cout << y << endl; // y = 69 return 0; }
Outputs:
Toán tử số học (Arithmetic Operators)
Toán tử số học 2 thành phần
Bảng dưới đây chỉ ra tất cả các toán tử số học được hỗ trợ bởi ngôn ngữ C. Được sử dụng để thực hiện các phép toán: cộng, trừ, nhân, chia,… trên các giá trị số (biến và hằng). Đây là các toán tử cần sự tham gia của 2 giá trị số nên được phân loại là các toán tử 2 ngôi.
Toán tử | Ý nghĩa |
phép toán cộng | |
phép toán trừ | |
phép toán nhân | |
phép toán chia | |
phép toán lấy số dư(chỉ áp dụng cho số nguyên) |
VD:
#include
int main(){ int a, b; printf(“\nNhập số a = “); scanf(“%d”, &a); // Lưu ý nhập b != 0 printf(“\nNhập số b b = “); scanf(“%d”, &b); // Phép (+) int sum = a + b; printf(“\nPhép cộng: %d + %d = %d”, a, b, sum); // Phép (-) int sub = a – b; printf(“\nPhép trừ:%d – %d = %d”, a, b, sub); // Phép (*) int mul = a * b; printf(“\nPhép nhân:%d * %d = %d”, a, b, mul); // Phép (/) float div = a / (float)b; printf(“\nPhép chia:%d / %d = %f”, a, b, div); // Phép (%) int mod = a % b; printf(“\nPhép chia lấy số dư: %d %% %d = %d”, a, b, mod); }
Kết quả
Toán tử tăng giảm
Toán tử tăng, giảm là 1 loại toán tử 1 ngôi, bao gồm:
-
Toán tử
++
: Tăng giá trị lên 1 đơn vị -
Toán tử
--
: Giảm giá trị đi 1 đơn vị
Khi đặt toán tử tăng giảm ở một lệnh riêng biệt, chúng cho ra kết quả như nhau.Nhưng nếu đặt phép tăng, giảm trong một biểu thức lệnh khác kết quả sẽ khác nhau. Xét trường hợp tăng giảm biến a
- Với a++ và a–: Chương trình sẽ thực hiện lệnh với a sau đó mới thực hiện tăng và giảm biến a
- Với ++a và –a: Chương trình sẽ thực hiện tăng/giảm biến a sau đó mới thực hiện lệnh
VD:
#include
int main(){ int a; // Toán tử ++ với a = 5 a = 5; a++; printf(“a++ = %d \n”, a); a = 5; ++a; printf(“++a = %d \n”, a); //Toán tử — với a = 5 a = 5; a–; printf(“a– = %d \n”, a); a = 5; –a; printf(“–a = %d \n”, a); //Dùng toán tử tăng giảm phía trước và sau biến trong một lệnh khác a = 5; printf(“Voi a = %d trong lenh printf \n”, a); a = 5; printf(“++a = %d \n”, ++a); a = 5; printf(“–a = %d \n”, –a); a = 5; printf(“a++ = %d \n”, a++); a = 5; printf(“a– = %d \n”, a–); }
Kết quả
Toán tử so sánh(quan hệ): Trả về giá trị là true (đúng) hoặc false (sai)
int A=5, B=6;
-
(nhỏ hơn)
A < B
-> true -
<=
(nhỏ hơn hoặc bằng)
A <= B
-> true -
(lớn hơn)
A > B
-> false -
>=
(lớn hơn hoặc bằng)
A >= B
-> false -
==
(bằng)
A == B
-> false -
!=
(khác)
A != B
-> true
Các toán tử hỗn hợp trong C++
Dưới đây là một số toán tử hỗn hợp quan trọng được hỗ trợ bởi ngôn ngữ C++.
Toán tử | Miêu tả |
sizeof | Toán tử sizeof trong C++ trả về kích cỡ của một biến. Ví dụ: sizeof(a), với a là integer, sẽ trả về 4 |
Điều kiện ? X : Y | Toán tử điều kiện trong C++. Nếu Condition là true ? thì nó trả về giá trị X : nếu không thì trả về Y |
Toán tử Comma trong C++ làm cho một dãy hoạt động được thực hiện. Giá trị của toàn biểu thức comma là giá trị của biểu thức cuối cùng trong danh sách được phân biệt bởi dấu phảy | |
. (dot) và -> (arrow) | Toán tử thành viên trong C++ được sử dụng để tham chiếu các phần tử đơn của các lớp, các cấu trúc, và union |
Cast | Toán tử ép kiểu (Casting) trong C++ biến đổi một kiểu dữ liệu thành kiểu khác. Ví dụ: int(2.2000) sẽ trả về 2 |
Toán tử con trỏ & trong C++ trả về địa chỉ của một biến. Ví du: &a sẽ trả về địa chỉ thực sự của biến này | |
Toán tử con trỏ * trong C++ là trỏ tới một biến. Ví dụ: *var sẽ trỏ tới một biến var |
Toán tử sizeof trong C++
sizeof là một từ khóa trong C++, nhưng nó là một toán tử compile-time mà quyết định kích cỡ, bằng giá trị byte, của một biến hoặc kiểu dữ liệu.
Toán tử sizeof có thể được sử dụng để lấy kích cỡ của lớp, cấu trúc, union và bất kỳ kiểu dữ liệu tự định nghĩa khác (user-defined) trong C++.
Cú pháp để sử dụng toán tử sizeof trong C++ như sau:
sizeof (kieu du lieu)
Tại đây, data type là kiểu dữ liệu gồm lớp, cấu trúc, union và bất kỳ kiểu dữ liệu tự định nghĩa khác (user-defined) trong C++.
Bạn thử ví dụ sau để hiểu cách sử dụng toán tử sizeof trong C++. Copy và paste chương trình sau trong tệp test.cpp, sau đó biên dịch và chạy chương trình.
include
using namespace std;int main(){cout << “Kich co cua char : ” << sizeof(char) << endl;cout << “Kich co cua int : ” << sizeof(int) << endl;cout << “Kich co cua short int : ” << sizeof(short int) << endl;cout << “Kich co cua long int : ” << sizeof(long int) << endl;cout << “Kich co cua float : ” << sizeof(float) << endl;cout << “Kich co cua double : ” << sizeof(double) << endl;cout << “Kich co cua wchar_t : ” << sizeof(wchar_t) << endl;return 0;}
Chạy chương trình C++ trên sẽ cho kết quả như hình sau:
Toán tử điều kiện ? : trong C++
Cú pháp của toán tử điều kiện ? : trong C++ là:
bieu_thuc_1 ? bieu_thuc_2 : bieu_thuc_3;
Ở đây, bieu_thuc_1, bieu_thuc_2 và bieu_thuc_3 là các biểu thức. Bạn chú ý sự sử dụng và vị trí của dấu hai chấm. Giá trị của một biểu thức ? được quyết định như sau: bieu_thuc_1 được ước lượng. Nếu nó là true, thì bieu_thuc_2 được ước lượng và trở thành giá trị của toàn bộ biểu thức ?. Nếu bieu_thuc_1 là false, thì bieu_thuc_3 được ước lượng và giá trị của nó trở thành giá trị của biểu thức ?.
Biểu thức ? được xem như là một toán tử tam phân bởi vì nó yêu cầu ba toán hạng và có thể được sử dụng để thay thế lệnh if-else, có form sau:
if(dieu_kien){var = X;}else{var = Y;}Bạn xét code sau:if(y < 10){var = 30;}else{var = 40;}
Code trên có thể được viết lại như thế này:
var = (y < 10) ? 30 : 40;
Ở đây, x được gán giá trị 30 nếu y nhỏ hơn 10 và được gán 40 nếu không nhỏ hơn 10. Bạn có thể thử ví dụ sau:
#include
using namespace std;int main (){// Khai bao bien cuc bo:int x, y = 10;x = (y < 10) ? 30 : 40;cout << “Gia tri cua x la: ” << x << endl;return 0;}
Khi code trên được biên dịch và thực thi, nó cho kết quả sau:
Gia tri cua x la: 40
Toán tử comma trong C++
Mục đích của toán tử comma trong C++ là để xâu chuỗi một số biểu thức cùng nhau. Giá trị của một danh sách biểu thức được phân biệt bởi dấu phảy là giá trị của biểu thức cuối cùng bên phải. Về cơ bản, hiệu quả của dấu phảy là để làm cho một dãy các hoạt động để được thực hiện.
Các giá trị của các biểu thức khác sẽ bị loại bỏ. Nghĩa là, biểu thức cuối cùng bên phải sẽ trở thành giá trị của toàn bộ biểu thức được phân biệt bởi dấu phảy. Ví dụ:
var = (biendem=19, incr=10, biendem+1);
Tại đây, đầu tiên gán cho biendem giá trị 19, gán cho incr giá trị 10, sau đó thêm 1 tới biendem, và cuối cùng, gán cho var giá trị của biểu thức cuối cùng bên phải, biểu thức biendem+1, là 20. Dấu ngoặc đơn là cần thiết bởi vì toán tử comma có độ ưu tiên thấp hơn toán tử gán.
Để xem hiệu quả của toán tử comma, bạn thử chạy ví dụ sau:
#include
using namespace std;int main(){int i, j;j = 10;i = (j++, j+100, 999+j);cout << i;return 0;}
Khi code trên được biên dịch và thực thi, nó cho kết quả sau:
1010
Thủ tục mà giá trị của i được ước lượng là: j bắt đầu với giá trị 0. Sau đó j được tăng tới 11. Tiếp đó, j được cộng với 100. Cuối cùng, j (vẫn chứa 11) được cộng với 999, mà sẽ cho kết quả là 1010.
Toán tử thành viên (. và ->) trong C++
Toán tử thành viên dot (.) và arrow (->) được sử dụng để tham chiếu các thành viên riêng lẻ của lớp, cấu trúc struct và union trong C++.
Toán tử dot được áp dụng cho đối tượng thực sự. Toán tử arrow được sử dụng với một con trỏ tới một đối tượng. Ví dụ, bạn xét cấu trúc sau:
struct sinhvien {char ten[16];int diemthi;} sv;
Toán tử dot (.) trong C++
Để gán giá trị “hoang” cho thành viên ten của đối tượng sinhvien, bạn viết:
strcpy(sinhvien.ten, “hoang”);
Toán tử arrow (->) trong C++
Nếu p_sv là một con trỏ tới đối tượng của kiểu sinhvien, thì để gán giá trị “hoang” tới thành viên ten của đối tượng sinhvien, bạn viết:
strcpy(p_sv->ten, “hoang”);
Có thể nói đơn giản rằng: Để truy cập các thành viên của một cấu trúc, sử dụng toán tử dot trong C++. Để truy cập các thành viên của một cấu trúc thông qua một con trỏ, sử dụng toán tử arrow.
Toán tử ép kiểu (casting) trong C++
Toán tử ép kiểu (một cast) trong C++ là một toán tử đặc biệt mà làm một kiểu dữ liệu này biến đổi thành kiểu dữ liệu khác. Toán tử ép kiểu là một toán tử một ngôi và có cùng độ ưu tiên như bất kỳ toán tử một ngôi nào khác trong C++.
Cú pháp được sử dụng thường xuyên của toán tử ép kiểu trong C++ là:
(kieu_du_lieu) bieu_thuc
Ở đây, kieu_du_lieu là kiểu dữ liệu bạn muốn. Dưới đây là một số toán tử ép kiểu được hỗ trợ bởi C++:
const_cast
(bieu_thuc): Toán tử const_cast được sử dụng để ghi đè const và/hoặc volatile. Kiểu dữ liệu bạn muốn phải giống như kiểu dữ liệu nguồn ngoại trừ sự sửa đổi của các thuộc tính const hoặc volatile trong một cast. Dạng ép kiểu này thao tác thuộc tính const của đối tượng đã truyền: hoặc được thiết lập hoặc gỡ bỏ.
dynamic_cast
(bieu_thuc): Toán tử dynamic_cast trong C++ thực hiện một ép kiểu tại runtime mà thẩm tra tính hợp lệ của cast. Nếu cast không thể được tạo ra, cast này thất bại và biểu thức ước lượng là null. Một toán tử dynamic_cast thực hiện các cast trên các kiểu đa hình và có thể ép một con trỏ A* thành một con trỏ B* chỉ khi đối tượng đang được trỏ tới thực sự là một đối tượng B.
reinterpret_cast
(bieu_thuc): Toán tử reinterpret_cast trong C++ thay đổi một con trỏ tới bất kỳ kiểu con trỏ khác. Nó cũng cho phép ép kiểu từ con trỏ tới một kiểu integer và ngược lại.
static_cast
(bieu_thuc): Toán tử static_cast trong C++ thực hiện một cast không có tính đa hình. Ví dụ, nó có thể được sử dụng để ép kiểu một con trỏ lớp cơ sở thành một con trỏ lớp kế thừa.
Tất cả toán tử ép kiểu trên sẽ được sử dụng trong khi làm việc với lớp và đối tượng. Bây giờ, bạn thử ví dụ sau để hiểu toán tử ép kiểu đơn giản trong C++. Copy và paste chương trình C++ sau trong tệp test.cpp, sau đó biên dịch và chạy chương trình:
include
using namespace std;main(){double a = 15.65653;float b = 9.02;int c ;c = (int) a;cout << “Dong 1: Gia tri cua (int)a la: ” << c << endl ;c = (int) b;cout << “Dong 1: Gia tri cua (int)b la: ” << c << endl ;return 0;}
Chạy chương trình C++ trên sẽ cho kết quả như hình sau:
Toán tử con trỏ trong C++
C++ cung cấp hai toán tử con trỏ là: toán tử & (toán tử address of) và toán tử * (toán tử indirection).
Một con trỏ là một biến mà chứa địa chỉ của biến khác hoặc bạn có thể nói rằng một biến chứa địa chỉ của biến khác là được xem như là trỏ tới biến khác. Một biến có thể là bất kỳ kiểu dữ liệu nào, gồm đối tượng, cấu trúc, hoặc chính con trỏ.
Toán tử . (dot) và toán tử -> (arrow) được sử dụng để tham chiếu tới các thành viên riêng rẽ của lớp, cấu trúc, và union.
Toán tử & trong C++
Toán tử & là một toán tử một ngôi trong C++ mà trả về địa chỉ bộ nhớ của toán hạng của nó. Ví dụ, nếu var là một biến integer, thì &var là địa chỉ của nó. Toán tử này có cùng độ ưu tiên và thứ tự từ phải qua trái như các toán tử một ngôi khác trong C++.
Bạn nên đọc toán tử & là “address of”, nghĩa là &var sẽ được đọc là “địa chỉ của var”.
Toán tử * trong C++
Toán tử con trỏ thứ hai là toán tử * trong C++, và nó một sự bổ sung cho toán tử &. Đây là toán tử một ngôi mà trả về giá trị của biến được đặt tại địa chỉ đã được xác định bởi toán hạng của nó.
Sau đây là chương trình minh họa cho hai loại toán tử con trỏ trong C++:
#include
using namespace std;int main (){int var;int *ptr;int val;var = 3000;// lay dia chia cua bien varptr = &var// Lay gia tri co san tai ptrval = *ptr;cout << “Gia tri cua var la: ” << var << endl;cout << “Gia tri cua ptr la: ” << ptr << endl;cout << “Gia tri cua val la: ” << val << endl;return 0;}Chạy chương trình C++ trên sẽ cho kết quả như hình sau:
Có thể bạn quan tâm
Toán tử trong C là một ký hiệu được sử dụng để thực hiện một phép tính/chức năng nào đó. Ngôn ngữ lập trình C cung cấp các dạng toán tử sau:
- Toán tử số học.
- Toán tử quan hệ.
- Toán tử logic.
- Toán tử so sánh bit.
- Toán tử gán.
- Toán tử hỗn hợp.
- Thứ tự ưu tiên.
Nội dung chính
Các toán tử hỗn hợp ↦ sizeof & ternary
Có một số toán tử hỗn hợp quan trọng là sizeof và ? : được hỗ trợ bởi ngôn ngữ C.
Toán tử | Mô tả | Ví dụ |
sizeof() | Trả lại kích cỡ của một biến | sizeof(a), với a là integer, thì sẽ trả lại kết quả là 4. |
Trả lại địa chỉ của một biến. | &a sẽ cho địa chỉ thực sự của biến a. | |
Trỏ tới một biến. | *a; sẽ trỏ tới biến a. | |
? : | Biểu thức điều kiện | Nếu điều kiện là true ? thì giá trị X : Nếu không thì giá trị Y |
Thứ tự ưu tiên
Thứ tự ưu tiên của các toán tử trong C
Thứ tự ưu tiên quyết định trật tự thực hiện các toán tử trên các 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.
Loại | Toán tử | Thứ tự ưu tiên |
Postfix | () -> . ++ – – | Trái sang phải |
Unary | + – ! ~ ++ – – (type)* & sizeof | Phải sang trái |
Tính nhân | * / % | Trái sang phải |
Tính cộng | + – | Trái sang phải |
Dịch chuyển | << >> | Trái sang phải |
Quan hệ | < <= > >= | Trái sang phải |
Cân bằng | == != | Trái sang phải |
Phép AND bit | Trái sang phải | |
Phép XOR bit | Trái sang phải | |
Phép OR bit | Trái sang phải | |
Phép AND logic | && | Trái sang phải |
Phép OR logic | || | Trái sang phải |
Điều kiện | ?: | Phải sang trái |
Gán | = += -= *= /= %=>>= <<= &= ^= |= | Phải sang trái |
Dấu phảy | Trái sang phải |
Thay đổi thứ tự ưu tiên của các toán tử trong C
Để thay đổi thứ tự ưu tiên trên một biểu thức, bạn có thể sử dụng dấu ngoặc đơn ():
- Phần được giới hạn trong ngoặc đơn được thực hiện trước.
- Nếu dùng nhiều ngoặc đơn lồng nhau thì toán tử nằm trong ngoặc đơn phía trong sẽ thực thi trước, sau đó đến các vòng phía ngoài.
- Trong phạm vi một cặp ngoặc đơn thì quy tắc thứ tự ưu tiên vẫn giữ nguyên tác dụng.
Ví dụ, x = 10 + 5 * 2; ở đây, x được gán giá trị 20, chứ không phải 30 bởi vì toán tử * có quyền ưu tiên cao hơn toán tử +, vì thế đầu tiên nó thực hiện phép nhân 5 * 2 và sau đó thêm với 10.
Để thay đổi thứ tự ưu tiên ta dùng dấu (), ví dụ, x = (10 + 5) * 2; ở đây x = 30.
Toán tử trong C++
Toán tử C++ là gì? Cách dùng toán tử trong C++ như thế nào? Hãy cùng Quantrimang.com tìm hiểu những điều cần biết về toán tử trong C++ nhé!
Trong xu thế khoa học công nghệ ngày càng phát triển, nghề lập trình ngày càng trở thành một nghề nghiệp được nhiều người trẻ hướng tới. Lập trình chính là cơ sở hỗ trợ tạo ra nhiều sản phẩm công nghệ hữu ích cho cuộc sống và công việc của tất cả chúng ta, chẳng hạn như ứng dụng/ phần mềm/ chương trình dạy học, xử lý dữ liệu lớn, kết nối online miễn phí và nhiều hơn thế nữa.
Hiện bạn có rất nhiều lựa chọn ngôn ngữ lập trình để phát triển sản phẩm. C++ chỉ là một trong số những lựa chọn phổ biến. Để biết cách dùng C++, bạn cần hiểu rõ về toán tử của nó.
Toán tử là một biểu tượng hoạt động trên giá trị để thực hiện các phép tính logic và toán học cụ thể. Chúng tạo thành nền tảng của ngôn ngữ lập trình bất kỳ. Trong C++, người dùng có sẵn các toán tử để cung cấp chức năng cần thiết.
Một toán tử điều hành các toán hạng. Ví dụ:
int c = a + b;
- Ở đây + là toán tử cộng thêm
- a và b là toán hạng được thêm vào.
Toán tử được dùng để thực hiện các thao tác trên biến và giá trị. Ví dụ bên dưới dùng toán tử để cộng hai giá trị lại với nhau:
int x = 100 + 50;
Dù toán tử thường được dùng để cộng hai giá trị với nhau, như ví dụ ở trên, nó cũng có thể được dùng để cộng một biến và một giá trị hoặc một biến và biến khác. Ví dụ:
int sum1 = 100 + 50; // 150 (100 + 50) int sum2 = sum1 + 250; // 400 (150 + 250) int sum3 = sum2 + sum2; // 800 (400 + 400)
Toán tử trong C++ có thể được chia thành 6 loại:
Toán tử trong C++ là gì?
- Toán tử số học
- Toán tử quan hệ
- Toán tử logic
- Toán tử so sánh bit
- Toán tử gán
- Toán tử hỗn hợp
Toán tử quan hệ trong C
Các toán tử quan hệ được sử dụng kiểm tra mối quan hệ giữa hai toán hạng. Kết quả của một biểu thức có dùng các toán tử quan hệ là những giá trị Boolean (logic “true” hoặc “false”). Các toán tử quan hệ được sử dụng trong các cấu trúc điều khiển.
Bảng dưới đây mô tả các toán tử quan hệ được hỗ trợ bởi ngôn ngữ C. Giả sử biến A = 10 và biến B = 20:
Toán tử | Miêu tả | Ví dụ |
== | Kiểm tra nếu 2 toán hạng bằng nhau hay không. Nếu bằng thì điều kiện là true. | (A == B) là không đúng. |
!= | Kiểm tra 2 toán hạng có giá trị khác nhau hay không. Nếu không bằng thì điều kiện là true. | (A != B) là true. |
Kiểm tra nếu toán hạng bên trái có giá trị lớn hơn toán hạng bên phải hay không. Nếu lớn hơn thì điều kiện là true. | (A > B) là không đúng. | |
Kiểm tra nếu toán hạng bên trái nhỏ hơn toán hạng bên phải hay không. Nếu nhỏ hơn thì là true. | (A < B) là true. | |
>= | Kiểm tra nếu toán hạng bên trái có giá trị lớn hơn hoặc bằng giá trị của toán hạng bên phải hay không. Nếu đúng là true. | (A >= B) là không đúng. |
<= | Kiểm tra nếu toán hạng bên trái có giá trị nhỏ hơn hoặc bằng toán hạng bên phải hay không. Nếu đúng là true. | (A <= B) là true. |
Thứ tự ưu tiên toán tử trong C
Thứ tự ưu tiên toán tử trong C xác định cách biểu thức được tính toán. Ví dụ, toán tử nhân có quyền ưu tiên hơn toán tử cộng, và nó được thực hiện trước.
Ví dụ, x = 7 + 3 * 2; ở đây, x được gán giá trị 13, chứ không phải 20 bởi vì toán tử * có quyền ưu tiên cao hơn toán tử +, vì thế đầu tiên nó thực hiện phép nhân 3 * 2 và sau đó thêm với 7.
Bảng dưới đây liệt kê thứ tự ưu tiên của các toán tử. Các toán tử với quyền ưu tiên cao nhất xuất hiện trên cùng của bảng, và các toán tử có quyền ưu tiên thấp nhất thì ở bên dưới cùng của bảng. Trong một biểu thức, các toán tử có quyền ưu tiên cao nhất được tính toán đầu tiên.
Loại | Toán tử | Thứ tự ưu tiên |
Postfix | () [] -> . ++ – – | Trái sang phải |
Unary | + – ! ~ ++ – – (type)* & sizeof | Phải sang trái |
Tính nhân | * / % | Trái sang phải |
Tính cộng | + – | Trái sang phải |
Dịch chuyển | << >> | Trái sang phải |
Quan hệ | < <= > >= | Trái sang phải |
Cân bằng | == != | Trái sang phải |
Phép AND bit | Trái sang phải | |
Phép XOR bit | Trái sang phải | |
Phép OR bit | Trái sang phải | |
Phép AND logic | && | Trái sang phải |
Phép OR logic | || | Trái sang phải |
Điều kiện | ?: | Phải sang trái |
Gán | = += -= *= /= %=>>= <<= &= ^= |= | Phải sang trái |
Dấu phảy | Trái sang phải |
Bài trước: Lớp lưu trữ trong lập trình C
Bài tiếp: Điều khiển luồng trong lập trình C
Một số toán tử khác
Toán tử | Miêu tả | Ví dụ |
Trả lại kích cỡ của một biến | ||
Trả lại địa chỉ của một biến. | ||
Trỏ tới một biến. | ||
Biểu thức điều kiện | Nếu điều kiện đúng ? thì trả về giá trị X : Nếu không thì trả về giá trị Y | |
Ước lượng giá trị toán hạng 1, ước lượng giá trị toán hạng 2 và trả về giá trị toán hạng 2 là giá trị cuối cùng |
Một số toán tử khác
Toán tử phẩy
Nhiều biểu thức có thể được kết nối vào cùng một biểu thức sử dụng toán tử phẩy. Toán tử phẩy yêu cầu 2 toán hạng. Đầu tiên nó ước lượng toán hạng trái sau đó là toán hạng phải, và trả về giá trị của toán hạng phải như là kết quả sau cùng.
Ví dụ:
#include int main() { int m, t; m = (t =2, t*5 + 10); printf("t = %d, m = %d\n", t, m); return 0; }
Kết quả thu được:
t = 2, m = 20
Toán tử lấy kích thước
C cung cấp toán tử hữu dụng, sizeof, để tính toán kích thước của bất kỳ hạng mục dữ liệu hay kiểu dữ liệu nào. Nó yêu cầu một toán hạng duy nhất có thể là tên kiểu (ví dụ, int) hay một biểu thức (ví dụ, 100) và trả về kích thước của những thực thể đã chỉ định theo byte. Chạy thử ví dụ nhá. Toán tử này chúng ta đã làm quen ở phần Kiểu dữ liệu rồi.
Ví dụ:
#include int main() { printf("char size = %d byte\n", sizeof(char)); printf("short size = %d byte\n", sizeof(short)); printf("int size = %d byte\n", sizeof(int)); printf("long size = %d byte\n", sizeof(long)); printf("float size = %d byte\n", sizeof(float)); printf("double size = %d byte\n", sizeof(double)); printf("1.55 size = %d byte\n", sizeof(1.55)); printf("\"Hello\" size = %d byte\n", sizeof("Hello")); return 0; }
Kết quả thu được:
char size = 1 byte short size = 2 byte int size = 4 byte long size = 8 byte float size = 4 byte double size = 8 byte 1.55 size = 8 byte “Hello” size = 6 byte
Tổng quan về toán tử
Trong bài CẤU TRÚC MỘT CHƯƠNG TRÌNH C++ (Structure of a program), bạn đã biết được một thành phần không thể thiếu trong một chương trình máy tính là Các câu lệnh và biểu thức (Statements and expressions).
Biểu thức ở đây chính là một thực thể toán học. Nói cách khác, nó là một sự kết hợp giữa 2 thành phần:
- Toán hạng: có thể là một hằng số, biến số hoặc một lời gọi hàm.
- Toán tử: xác định cách thức làm việc giữa các toán hạng.
Ví dụ:
// Một số toán tử trong biểu thức bên dưới = ( + ) * int nSoNguyen = (6 + 9) * (6 - 9);
Có 3 loại toán tử trong C++:
- Toán tử 1 ngôi (Unary): chỉ có 1 toán hạng trong biểu thức. Ví dụ: +, – , ++, — .
- Toán tử 2 ngôi (Binary): có 2 toán hạng trong biểu thức. Ví dụ: +, -, *, /, % .
- Toán tử 3 ngôi (Ternary): có 3 toán hạng trong biểu thức, Ví dụ: Conditional operator ?:
Chú ý: Một số toán tử có thể mang nhiều ý nghĩa khác nhau. Ví dụ: Unary plus (+) và Binary plus (+).
Kết luận
Qua bài học này, bạn đã nắm được Toán tử số học, toán tử tăng giảm và toán tử gán trong C++ (Arithmetic operators).
Ở bài tiếp theo, bạn sẽ được học về TOÁN TỬ QUAN HỆ, LOGIC, BITWISE, MISC & ĐỘ ƯU TIÊN TOÁN TỬ TRONG C++ (Operators).
Cảm ơn các bạn đã theo dõi bài viết. Hãy để lại bình luận hoặc góp ý của mình để phát triển bài viết tốt hơn. Đừng quên “Luyện tập – Thử thách – Không ngại khó”.
Độ ưu tiên của các toán tử
Độ ưu tiên các toán tử được thực hiện từ trên xuống dưới theo bảng sau. Trong mỗi hàng lại có độ ưu tiên như ở cột thứ 3.
Như vậy, thông qua bài học này, mình đã giới thiệu đến các bạn những toán tử trong C. Cảm ơn các bạn đã đọc.
Theo dõi VnCoder trên Facebook, để cập nhật những bài viết, tin tức và khoá học mới nhất!
- Bài 1: Tổng quan ngôn ngữ lập trình C
- Bài 2: Hướng dẫn cài đặt C
- Bài 3: Biến trong C
- Bài 4: Các kiểu dữ liệu trong C
- Bài 5: Toán tử trong C
- Bài 6: Định danh trong C
- Bài 7: Câu lênh điều kiện if, if-else và switch trong C
- Bài 8: Vòng lặp trong C – Câu lệnh for, while, do…while
- Bài 9: Câu lệnh break, continue goto và hàm exit() trong C
- Bài 10: Mảng trong C
- Bài 11: Con trỏ trong C
- Bài 12: Đọc ghi file trong C
- Bài 13: Chuỗi trong C
- Bài 14: Struct trong C
Toán tử số học, toán tử tăng giảm, toán tử gán số học trong C++ (Operators)
Toán tử số học trong C
Bảng dưới đây chỉ ra tất cả các toán tử số học được hỗ trợ bởi ngôn ngữ C. Giả sử biến A có giá trị 10 và biến B có giá trị 20:
Toán tử | Mô tả | Ví dụ |
Thêm hai toán hạng | A + B sẽ cho kết quả là 30 | |
Trừ giá trị toán hạng hai từ toán hạng đầu | A – B sẽ cho kết quả là -10 | |
Nhân hai toán hạng | A * B sẽ cho kết quả là 200 | |
Chia lấy phần nguyên hai toán hạng | B / A sẽ cho kết quả là 2 | |
Chia lấy phần dư | B % A sẽ cho kết quả là 0 | |
++ | Lượng gia giá trị toán hạng thêm 1 đơn vị | A++ sẽ cho kết quả là 11 |
— | Lượng giảm giá trị toán hạng một đơn vị | A– sẽ cho kết quả là 9 |
Bảng thứ tự ưu tiên thực hiện của toán tử (theo thứ tự giảm dần mức độ ưu tiên):
Loại | Toán tử | Thứ tự ưu tiên |
Postfix | Trái sang phải | |
Unary | Phải sang trái | |
Tính nhân | Trái sang phải | |
Tính cộng | Trái sang phải | |
Dịch chuyển bit | Trái sang phải | |
So sánh không ngang bằng | Trái sang phải | |
So sánh ngang bằng | Trái sang phải | |
Phép AND bit | Trái sang phải | |
Phép XOR bit | Trái sang phải | |
Phép OR bit | Trái sang phải | |
Phép AND logic | Trái sang phải | |
Phép OR logic | Trái sang phải | |
Điều kiện | Phải sang trái | |
Gán | Phải sang trái | |
Dấu phảy | Trái sang phải |
Tải xuống
Tài liệu
Nhằm phục vụ mục đích học tập Offline của cộng đồng, Kteam hỗ trợ tính năng lưu trữ nội dung bài học Toán tử số học, toán tử tăng giảm, toán tử gán số học trong C++ (Operators) dưới dạng file PDF trong link bên dưới.
Ngoài ra, bạn cũng có thể tìm thấy các tài liệu được đóng góp từ cộng đồng ở mục TÀI LIỆU trên thư viện Howkteam.com
Đừng quên like và share để ủng hộ Kteam và tác giả nhé!
Keywords searched by users: toán tử trong c
Categories: Có được 97 Toán Tử Trong C
See more here: kientrucannam.vn
See more: https://kientrucannam.vn/vn/