Bài 03: Các kiểu dữ liệu trong C++
Nội dung bài học
- Tìm hiểu các kiểu dữ liệu và
- Phạm vi cụ thể của từng kiểu
Video lý thuyết
Video ví dụ minh họa
Các kiểu dữ liệu trong C++
- C++ là một ngôn ngữ mạnh về kiểu. Tức là các thành phần cấu thành đều có kiểu xác định, từ các lớp, các phương thức đến các trường dữ liệu, các biến.
- Khi chương trình chạy ta cần cung cấp dữ liệu cho chương trình thông qua các biến. Bản chất của biến là tên của vùng nhớ dùng để lưu trữ dữ liệu. Điều này có nghĩa là khi bạn tạo một biến trong C++ thì bạn sẽ chiếm dụng một vùng nhớ ở đâu đó trong bộ nhớ RAM của máy tính.
- Do dữ liệu đa dạng: hình ảnh, âm thanh, video, văn bản, các số nguyên, số thực… nên khi lưu trữ ta cần sử dụng đúng kiểu dữ liệu tương ứng. Dựa vào kiểu của biến, hệ điều hành sẽ cấp phát bộ nhớ và quyết định xem thứ gì sẽ được lưu trong vùng nhớ đã cấp phát đó.
- Sau đây là sơ đồ thể hiện mối quan hệ giữa các kiểu trong C++:

- Nội dung bài học này chỉ tập trung vào kiểu nguyên thủy có sẵn trong C++. Về phần các kiểu do người dùng tự định nghĩa sẽ được trình bày chi tiết trong các bài học ở phần sau của khóa học.
Phạm vi sử dụng cụ thể của từng kiểu
- Một số kiểu nguyên trong C++ có thể sử dụng kết hợp với một trong các từ khóa sau để tạo nên kiểu hoàn chỉnh:
- signed: có dấu, mặc định tất cả các kiểu số nguyên thủy(cơ bản) trong C++ là kiểu có dấu. Tức là kiểu có thể chứa được cả số âm(có dấu trừ – phía trước) và số dương(có dấu + phía trước nhưng thường bỏ qua kí hiệu này)
- unsigned: không dấu. Một kiểu không dấu là kiểu chỉ có thể lưu trữ được các giá trị dương. Giá trị nhỏ nhất của kiểu unsigned là 0.
- short: để chỉ kiểu nhỏ hơn kiểu dữ liệu hiện thời. Ví dụ short int nhỏ hơn int.
- long: để chỉ kiểu lớn hơn kiểu hiện tại. Ví dụ int nhỏ hơn kiểu long int và long int nhỏ hơn long long int.
- Kiểu nguyên thủy: là kiểu không thể chia nhỏ hơn được nữa.
- Danh sách các kiểu và các đặc điểm của chúng:
Tên kiểu | Độ lớn(tính theo số byte) | Khoảng giá trị có thể lưu trữ | Ví dụ |
char | 1 | -128 đến 127 | ‘a’(mã 97 trong bảng mã ASCII) |
unsigned char | 1 | 0 đến 255 | ‘A’, ‘x’, ‘9’ |
signed char | 1 | -128 đến 127 | ‘0’ |
int | 4 | -2147483648 đến 2147483647 | 3265465 |
unsigned int | 4 | 0 đến 4294967295 | 555 |
signed int | 4 | -2147483648 đến 2147483647 | -12345 |
short int hay short | 2 | -32768 đến 32767 | -23 |
unsigned short int hay unsigned short | 2 | 0 đến 65535 | 20 |
signed short int hay signed short | 2 | -32768 đến 32767 | -39 |
long int hay long | 4 | Như kiểu int | 1000 |
signed long int hay signed long | 4 | Như kiểu int | 3256 |
unsigned long int hay unsigned long | 4 | Như kiểu unsigned int | 0 |
long long int hay long long | 8 | -9,223,372,036,854,775,808 đến 9,223,372,036,854,775,807 | 123456789 |
unsigned long long int hay unsigned long long | 8 | 0 đến 18,446,744,073,709,551,615 | 968754213 |
signed long long int hay signed long long | 8 | -9,223,372,036,854,775,808 đến 9,223,372,036,854,775,807 | -999999999 |
float | 4 | 3.4E+/-38 | 3.14f |
double | 8 | 1.7E+/-308(15 chữ số) | 3.14 |
long double | 8 | Giống double | 5.25 |
boolean | 1 | Lưu các giá trị true hoặc false | true |
enum | Không cố định | – | – |
wchar_t | 2 | 0 đến 65535 | – |
***Tên kiểu màu đỏ là tên thường dùng trong khóa học và trong thực tế.
- Mỗi kiểu có phạm vi giới hạn lưu trữ nhất định nên khi sử dụng bạn phải tuân thủ quy ước của kiểu. Ví dụ không lưu các giá trị > 4294967295 vào kiểu unsigned int. Nếu có giá trị > 4294967295 muốn lưu trữ bạn phải dùng kiểu khác, như long long chẳng hạn.
- Để xác định kích thước của một kiểu cụ thể trong C++ ta dùng toán tử sizeof. Ví dụ muốn xác định kích thước kiểu int ta làm như sau: sizeof(int).
- Để tính giá trị min, max của một kiểu có dấu nào đó ta dùng công thức:
- Min = -2^(size * 8 – 1). Ví dụ kiểu int: min = -2^(4 * 8 – 1) = -2147483648.
- Max = 2^(size * 8 – 1) – 1. Ví dụ int: max = 2^(4 * 8 – 1) – 1 = 2147483647.
- Để tính giá trị min, max của kiểu không dấu(unsigned) ta dùng công thức:
- Min = 0
- Max = 2^(size * 8) – 1. Ví dụ kiểu unsigned int: max = 2^(4 * 8) – 1 = 4294967295.
- Trong một số công cụ lập trình như XCode, Visual Studio có kiểu size_t. Đây chính là kiểu unsigned int.
Ví dụ minh họa trong video:
// Minh họa bài học số 3
#include <iostream>
using namespace std;
int main() {
cout << "Kich thuoc kieu short: " << sizeof(short) << endl;
cout << "Kich thuoc kieu int: " << sizeof(int) << endl;
cout << "Kich thuoc kieu long: " << sizeof(long) << endl;
cout << "Kich thuoc kieu long long: " << sizeof(long long) << endl;
cout << "Kich thuoc kieu float: " << sizeof(float) << endl;
cout << "Kich thuoc kieu double: " << sizeof(double) << endl;
cout << "Kich thuoc kieu long double: " << sizeof(long double) << endl;
cout << "Kich thuoc kieu char: " << sizeof(char) << endl;
// Comment ca vung: Ctrl K Ctrl C
// Bo comment: chon vung, sau do an Ctrl K Ctrl U
int number = -2147483648;
cout << "Number = " << number << endl;
long long number2 = -2147483649;
cout << "Number2 = " << number2 << endl;
}