1. Kiểu số nguyên
- Có dấu: là những số nguyên dương, số nguyên âm và số 0.
Kiểu dữ liệu | Bộ nhớ (byte) | Phạm vi giá trị |
---|---|---|
char |
1 | -128 đến 127 |
int |
2 | -32768 đến 32767 |
long |
4 | -2147483648 đến 2147483647 |
long long |
8 | -9223372036854775808 đến 9223372036854775807 |
Chú ý:
char
là một kiểu dữ liệu đặc biệt, nó vừa là kiểu số nguyên, cũng vừa là kiểu ký tự. Chi tiết hơn về char sẽ có ở phần kiểu ký tự, ở đây tạm coichar
là kiểu số nguyên bình thường.
- Không dấu: là những số nguyên dương và số 0. Số không dấu khi khai báo sử dụng từ khóa unsigned.
Kiểu dữ liệu | Bộ nhớ (byte) | Phạm vi giá trị |
---|---|---|
unsigned char |
1 | 0 đến 255 |
unsigned int |
2 | 0 đến 65535 |
unsighed long |
4 | 0 đến 4,294,967,295 |
unsigned long long |
8 | 0 đến 18,446,744,073,709,551,615 |
2. Kiểu số thực
Kiểu dữ liệu | Bộ nhớ (byte) | Phạm vi giá trị |
---|---|---|
float |
4 | 1.17549 x 10^(-38) đến 3.40282 x 10^(38) |
double |
8 | 2.22507 x 10^(-308) đến 1.79769 x 10^(308) |
long double |
8, 12 hoặc 16 | 3.36 x 10^(-4932) đến 1.18 x 10^(4932) |
Ta có thể sử dụng hàm setprecision()
thuộc thư viện <iomanip>
để xác định số chữ số ở phần thập phân.
VD:
float x = 6.3333;
cout << setprecision(3) << x;
Output:
6.33
3. Kiểu luận lý
- Dùng kiểu dữ liệu
bool
, khi khai báo sử dụng từ khóatrue
,false
hoặc 1, 0. - Giá trị khi được trả về của 1 biến kiểu luận lý là 1 hoặc 0.
- Có thể sử dụng
boolalpha
để xuất ratrue
hoặcfalse
thay vì 1 hoặc 0 và sử dụngnoboolalpha
để quay về xuất 1 hoặc 0.
VD:
bool x = 6 > 9, y = 6 < 9;
cout << x << endl
<< y << endl;
cout << boolalpha;
cout << x << endl
<< y << endl;
cout << noboolalpha;
cout << x << endl
<< y << endl;
Output:
0
1
false
true
0
1
4. Kiểu ký tự
- Là biến dùng kiểu dữ liệu
char
để lưu 1 ký tự trong bảng mã ASCII. - Miền giá trị: 256 ký tự trong bảng mã ASCII.
- Cũng là kiểu số nguyên do lưu mã ASCII của 1 ký tự (là 1 số nguyên). Vì vậy khi gán giá trị cho biến kiểu ký tự, có thể dùng số nguyên.
- Có thể dùng
static_cast<int16_t>(<tên biến>)
để xuất mã ASCII của ký tự lưu trong biến.
VD:
char x = 'A', y = 65;
cout << x << endl
<< y << endl
<< static_cast<int16_t>(x) << endl
<< static_cast<int16_t>(y);
Lưu ý: ký tự số nguyên không giống với mã ASCII số nguyên.
5. Biến
- Là tên của một vùng trong bộ nhớ RAM. Biến được dùng để nhận giá trị do người dùng nhập vào khi chạy chương trình hoặc dùng để chứa giá trị của một biểu thức
-
Cú pháp khai báo:
<kiểu dữ liệu> <tên biến>; hoặc <kiểu dữ liệu> <tên biến 1>, <tên biến 2>,..., <tên biến n>;
VD:
int a;
char b, c, d;
-
Ngay khi được định nghĩa. biến có thể được cung cấp cho giá trị. Cú pháp khai báo:
<kiểu dữ liệu> <tên biến> = <giá trị biến>;
VD:
int a = 6;
6. Hằng
- Có giá trị không đổi trong suốt phiên chạy chương trình
-
Cú pháp khai báo:
#define <tên hằng> <giá trị> hoặc const <kiểu dữ liệu> <tên hằng> = <giá trị>;
VD:
#define Pi 3.14
const float Pi = 3.14;
7. Toán tử
- Toán tử gán:
- Dùng để gán giá trị cho biến
-
Cú pháp:
<tên biến> = <giá trị>; <tên biến> = <tên biến>; <tên biến> = <biểu thức>;
Toán tử gán có thể thực hiện liên tiếp
VD:
int a, b, c;
a = 6;
b = c = 8;
cout << a << endl
<< b << endl
<< c;
Output:
6
8
8
- Toán tử 1 ngôi
- Chỉ có một toán hạng trong biểu thức.
-
Cú pháp:
<tên biến>++; (tăng 1 đơn vị) <tên biến>--; (giảm 1 đơn vị)
- Đặt trước toán hạng
++x
hay--x
: thực hiện tăng/giảm trước. - Đặt sau toán hạng
x++
hayx--
: thực hiện tăng/giảm sau.
VD
int x = 5, y = 6, z, t;
x++;
cout << "x = " << x << endl;
z = x++;
cout << "x = " << x << endl
<< "z = " << z << endl;
y--;
cout << "y = " << y << endl;
t = --y;
cout << "y = " << y << endl
<< "t = " << t << endl;
Output:
x = 6
x = 7
z = 6
y = 5
y = 4
z = 4
- Toán tử 2 ngôi
Có hai toán hạng trong biểu thức.
+
,–
,*
,/
,%
,+=
,-=
,*=
,/=
,%=
. Toán tử chia có 2 dạng:- Chia lấy nguyên
/
: trả về phần nguyên của phép chia. - Chia lấy dư
%
: trả về phần dư của phép chia
- Chia lấy nguyên
VD:
int x = 9, y = 3;
cout << x + y << endl
<< x - y << endl
<< x * y << endl
<< x / y << endl
<< x % y << endl;
int a = 6, b = 3;
a += b;
cout << a << endl;
a -= b;
cout << a << endl;
a *= b;
cout << a << endl;
a /= b;
cout << a << endl;
a %= b;
cout << a << endl;
Output:
12
6
27
3
0
9
6
18
6
0
- Toán tử trên bit
Tác động lên các bit của toán hạng.
&
(and),|
(or),^
(xor),~
(not),>>
(shift right),<<
(shift left).
Kiểu toán tử | Ký hiệu | Ý nghĩa |
---|---|---|
AND | & |
Áp dụng toán tử luận lý AND lên từng bit |
OR | | |
Áp dụng toán tử luận lý OR lên từng bit |
XOR | ^ |
Áp dụng toán tử luận lý XOR lên từng bit |
NOT | ~ |
Đảo ngược từng bit |
SHIFT RIGHT | >> |
Dịch các bit sang bên phải |
SHIFT LEFT | << |
Dịch các bit sang bên trái |
VD
- Toán tử quan hệ
So sánh 2 biểu thức với nhau và cho ra kết quả 0 (hay false nếu sai) hoặc 1 (hay true nếu đúng).
Các toán tử:
==
,>
,<
,>=
,<=
,!=
.
VD:
int x = 3, y = 9, z = 9;
cout << (x == y) << endl
<< (x < y) << endl
<< (x > y) << endl
<< (x >= y) << endl
<< (z <= y) << endl
<< (x != y) << endl;
Output:
0
1
0
0
1
1
- Toán tử luận lý
Tổ hợp nhiều biểu thức quan hệ với nhau và cho ra kết quả 0 (hay false nếu sai) hoặc 1 (hay true nếu đúng).
Các toán tử:
&&
(and),||
(or),!
(not)Chú ý: Luôn sử dụng dấu ngoặc đơn
()
khi thực hiện với các mệnh đề quan hệ để thể hiện rõ ràng ý nghĩa dòng lệnh và hạn chế sai sót.
VD:
int x = 3, y = 6, z = 9;
cout << ((x > y) && (x < z)) << endl
<< ((x < y) && (x < z)) << endl
<< ((x > y) || (x < z)) << endl
<< ((x > y) || (x > z)) << endl
<< (!(x < y)) << endl
<< (!(x > z)) << endl;
Output:
0
1
1
0
0
1 - Toán tử điều kiện Đây là toán tử 3 ngôi (gồm có 3 toán hạng) Cú pháp:
<biểu thức 1> ? <biểu thức 2> : <biểu thức 3>; Nếu `<biểu thức 1>` đúng thì giá trị trả về là `<biểu thức 2>`. Nếu `<biểu thức 1>` sai thì giá trị trả về là `<biểu thức 3`.
VD:
int x = 3, y = 6;
(x < y) ? cout << "true" : cout << "false";
cout << endl;
(x > y) ? cout << "true" : cout << "false";
Output:
true
false
- Toán tử phẩy
- Các biểu thức đặt cách nhau bằng dấu
,
. - Các biểu thức con lần lượt được tính từ trái sang phải.
- Biểu thức mới nhận được là giá trị của biểu thức bên phải cùng.
- Các biểu thức đặt cách nhau bằng dấu
VD:
int x = 3, y = 6, z = 9;
x = (y++, z = x + y, z += 3);
cout << x << endl
<< y << endl
<< z;
Output:
13
7
13
- Độ ưu tiên của các toán tử
Quy tắc thực hiện:
- Thực hiện biểu thức trong
( )
sâu nhất trước. - Thực hiện theo thứ tự ưu tiên các toán tử
- Thực hiện biểu thức trong