STARTING
CONTROL STATEMENT
FUNCTION
ARRAY & POINTER
OOP
STL
ITERATORS
OTHER FEATURES
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
MỚI CẬP NHẬT

Các kiểu dữ liệu trong C++ và cách khai báo

Trong bài này mình sẽ giới thiệu danh sách các kiểu dữ liệu trong C++, qua đó bạn cũng sẽ biết được giới hạn các kiểu dữ liệu trong C++ luôn nhé.

Thông thường chúng ta chia ra làm hai loại kiểu dữ liệu đó là chữ và số. Nhưng trong lập trình việc chia ra hai loại như vậy không rõ ràng và không phù hợp, vì đôi khi sẽ dẫn đến sử dụng không gian trong bộ nhớ một cách dư thừa. Để rõ hơn thì chúng ta sẽ xem danh sách các kiểu dữ liệu trong C++ ở bảng dưới đây.

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

1. Danh sách các kiểu dữ liệu trong C++

Sau đây là danh sách các kiểu dữ liệu và độ lớn của từng kiểu dữ liệu được lưu trữ trong bộ nhớ máy tính.

Loại dữ liệu Kiểu dữ liệu Số ô nhớ Miền giá trị
Boolean bool 1 byte 0 hoặc 1. Trong đó 0 => FALSE và 1 => TRUE
Ký tự char 1 byte -128 ... 127 hoặc 0 ... 255
- unsign char 1 byte 0 ... 255
- sign char 1 byte -128 ... 127
Số nguyên int 4 byte -2147483648 ... 2147483647
- unsign int 4 byte 0 ... 4294967295
- sign int 4 byte -2147483648 ... 2147483647
- short 2 byte -32768 .. 32767
- long 4 byte -215 ... 215 - 1
Số thực float 4 byte ±10-37 ... ±10+38
- double 8 byte ±10-307 ... ±10+308

Đây là các kiểu dữ liệu đơn giản có sẵn trong C++, còn các kiểu dữ liệu phức tạp như struct hoặc đối tượng do người dùng định nghĩa thì chúng ta sẽ tìm hiểu ở một bài khác.

Trong các kiểu dữ liệu trên bạn thêm từ khóa sign để định nghĩa miền giá trị từ âm tới dương, bổ sung từ khóa unsign để định nghĩa miền giá trị chỉ số dương. Trường hợp chỉ số dương thì bắt đầu từ 0 và nhân đôi miền giá trị lên.

Ví dụ:

  • Kiểu char có miền giá trị từ -128 ... 127
  • Kiểu sign char có miền giá trị từ -128 ... 127
  • Kiểu unsign char có miền giá trị từ 0 ... 255 (255 ~ 127x2, nhân đôi lên vì bắt đầu từ 0)

Vì nhiều kiểu dữ liệu nên mình không liệt kê hết, bạn hãy tự tính toán để đưa ra miền giá trị cho các kiểu giá trị còn lại nhé.

Nhìn vào bảng này bạn sẽ trả lời được vấn đề mà mình nói ở phần mở đầu, đó là việc khai báo biến dư thừa không gian trong bộ nhớ. Mỗi kiểu dữ liệu sẽ có số byte khác nhau, tức là chúng sẽ chiếm bộ nhớ càng nhỏ nếu số byte càng nhỏ. Vì vậy, khi sử dụng các kiểu dữ liệu thì ta phải cân nhắc tính toán thật kỹ. Ví dụ để lưu trữ tên thì chúng ta sử dụng kiểu char là được.

2. Giới hạn các kiểu dữ liệu trong C++

Trước khi vào vấn đề thì bạn cần phải biết đơn vị byte và bit, hai đơn vị này se có công thức chuyển đổi như sau: 1 byte = 8 bit. Mỗi bit sẽ là một ô nhớ trong bộ nhớ máy tính. Mình chỉ giải thích các kiểu dữ liệu chuẩn, còn các kiểu định nghĩa bởi signunsign thì bạn tự tính toán nhé.

Bây giờ chúng ta sẽ tìm hiểu chi tiết cụ thể từng loại dữ liệu đã được đề cập ở bảng trên.

Kiểu ký tự:

Có hai kiểu dữ liệu thuộc loại dữ liệu ký tự đó là kiểu charunsign char. Cả hai đều có chiều dài tối đa là 255 ký tự nhưng với unsign char thì phạm vi biểu diễn sẽ bắt đầu từ 0.

Mỗi ký tự char sẽ chiếm 1 byte (8 bit) trong bộ nhớ và chúng được biểu diễn thông qua bảng mã ASCII.

Kiểu dữ liệu Số ô nhớ Giới hạn
char 1 byte -128 ... 127
unsign char 1 byte 0 ... 255

Kiểu số nguyên:

Kiểu số nguyên là kiểu số mà khi chia cho 1 sẽ dư 0, nghĩa là đây là một số không có dấu phẩy động.

Chúng ta có các kiểu dữ liệu số nguyên đó là int, unsign int, short, long, unsign long. Phạm vi biểu diễn và kích thước của chúng sẽ tăng dần.

Kiểu dữ liệu Số ô nhớ Giới hạn
int 2 byte -32768 .. 32767
unsign int 2 byte 0 .. 65535
short 2 byte -32768 .. 32767
long 4 byte -2147483648 đến 2147483647
unsign long 4 byte 0 đến 4294967295

Kiểu ký tự cũng có thể được xem là kiểu số nguyên nếu biểu diễn thông qua bảng mã ASCII.

Kiểu số thực:

Kiểu số thực là kiểu có dấu phảy động, tức là khi chia số đó cho 1 thì sẽ có dư. Ví dụ 2,5 là kiểu số thực.

Chúng ta có hai kiểu dữ liệu biểu diễn cho số thực đó là floatdoublelong double.

Kiểu dữ liệu Số ô nhớ Giới hạn Chữ số có nghĩa
float 4 byte 3.4E-38 đến 3.4E+38 7 đến 8
double 8 byte 1.7E-308 đến 1.7E+308 15 đến 16
long double 10 byte 3.4E-4932 đến 1.1E4932 17 đến 18

3. Định nghĩa kiểu dữ liệu bằng TYPEDEF trong C++

Từ khóa typedef dùng để đặt tên lại hoặc đặt tên mới cho một kiểu dữ liệu.

Ví dụ bạn muốn đặt một tên khác cho kiểu int thì làm như sau:

typedef int kieu_so_nguyen;

Đoạn code trên sẽ tạo một kiểu dữ liệu tên là kieu_so_nguyen và nó là một bản sao của kiểu int. Lúc này bạn có thể sử dụng bình thường như sau:

#include <iostream.h>
using namespace std;

int main ()
{	
	typedef int kieu_so_nguyen;
	
	kieu_so_nguyen namsinh = 1990;
	
	cout << "Nam sinh cua toi la:";
	cout << endl;
	cout << namsinh;
	cout << endl;
	
	return 1;
}

Chương trình này hoạt động bình thường.

typedef c plus plus JPG

Ngoài ra bạn có thể định nghĩa một kiểu dữ liệu đã giới hạn ký tự như ví dụ dưới đây:

typedef char character[200];

Đoạn code này tạo một kiểu dữ liệu char 200 ký tự và gán nó với cái tên là character. Bây giờ để khai báo một kiểu char 200 ký tự thì bạn sẽ thông qua kiểu character.

#include <iostream.h>
using namespace std;

int main ()
{	
	typedef char character[200];
	character HoTen;
	
	cout << "Nhap ho ten cua ban:";
	cin >> HoTen;
	cout << endl;
	cout << "Ho ten cua ban la:";
	cout << HoTen;
	cout << endl;
	
	return 1;
}

Kết quả:

character JPG

Việc đặt lại tên nay sẽ rất hữu ích nếu trong chương trình sử dụng nhiều lần cùng một kiểu dữ liệu và cùng độ dài.

4. Khai báo kiểu dữ liệu cho biến C++

Khi khai báo biến thì bắt buộc bạn phải chọn một trong các kiểu dữ liệu ở trên cho biến đó.

Ví dụ: Khai báo kiểu dữ liệu cho các biến

int namsinh;
char ten[200];
float diem_thi;

Giải thích:

  • namsinh: Là một số nguyên nên mình chọn kiểu int.
  • ten: là kiểu ký tự nên mình chọn kiểu char.
  • diem: điểm có dấu phẩy động nên mình chọn kiểu float.

5. Xem kích thước của các kiểu dữ liệu C++

Để xem kích cỡ của các kiểu dữ liệu thì ta dùng từ khóa sizeof.

Ví dụ:

#include <iostream>
using namespace std;
 
int main()
{
   cout << "char la: " << sizeof(char) << endl;
   cout << "int la: " << sizeof(int) << endl;
   cout << "short int la: " << sizeof(short int) << endl;
   cout << "long int la: " << sizeof(long int) << endl;
   cout << "float la: " << sizeof(float) << endl;
   cout << "double la: " << sizeof(double) << endl;
   
   return 1;
}

Kết quả:

sizeof JPG

6. Lời kết

Với các kiểu dữ liệu căn bản trên bạn có thể viết các chương trình căn bản, và từ các kiểu dữ liệu này sau này chúng ta sẽ xây dựng thành các kiểu dữ liệu phức tạp hơn.

Bài tiếp theo chúng ta sẽ tìm hiểu cách viết ghi chú trong C++.

Cùng chuyên mục:

Cách nhân hai số trong ngôn ngữ C

Cách nhân hai số trong ngôn ngữ C

Cách cộng hai số nguyên trong C

Cách cộng hai số nguyên trong C

Tổng hợp hơn 1000 bài tập C / C++ có lời giải

Tổng hợp hơn 1000 bài tập C / C++ có lời giải

Bài này sẽ tổng hợp hơn 1000 bài tập C / C++ có lời giải…

Các hàm trong thư viện ctime C / C++

Các hàm trong thư viện ctime C / C++

Các hàm trong thư viện cstdio C / C++

Các hàm trong thư viện cstdio C / C++

Các hàm trong thư viện cctype C / C++

Các hàm trong thư viện cctype C / C++

Các hàm trong thư viện cstring C / C++

Các hàm trong thư viện cstring C / C++

Các hàm trong thư viện cstdlib C/C++

Các hàm trong thư viện cstdlib C/C++

Các hàm nhập xuất IO (iostream) trong C / C++

Các hàm nhập xuất IO (iostream) trong C / C++

Các hàm toán học (math) trong C / C++

Các hàm toán học (math) trong C / C++

Nếu bạn đang học C++ căn bản thì phải biết công dụng của những hàm…

Bài tập vòng lặp while và do while trong C++

Bài tập vòng lặp while và do while trong C++

Nếu một bài toán được giải bằng vòng lặp while thì bạn hoàn toàn có…

Bài tập vòng lặp for trong C++ có lời giải

Bài tập vòng lặp for trong C++ có lời giải

Vòng lặp for C++ rất quan trọng, nó được sử dụng rất nhiều khi xử…

Bài tập if else trong C++ (có đổi sang switch case)

Bài tập if else trong C++ (có đổi sang switch case)

Để thành thạo hai lệnh rẻ nhánh if else và switch case thì bạn phải…

Tìm hiểu cấu trúc mảng (array) trong C++

Tìm hiểu cấu trúc mảng (array) trong C++

Toán tử ba ngôi trong C++

Toán tử ba ngôi trong C++

Toán tử ba ngôi thực ra là cách rút gọn code của lệnh if else,…

Các toán tử trong C++

Các toán tử trong C++

Toán tử đóng vai trò rất quan trọng trong lập trình, nó giúp chúng ta…

Ngôn ngữ C++ là gì? Dùng làm gì trong công nghệ thông tin?

Ngôn ngữ C++ là gì? Dùng làm gì trong công nghệ thông tin?

C++ là một ngôn ngữ lập trình phổ biến và mạnh mẽ có kiểu dữ…

Đọc ghi file trong C

Đọc ghi file trong C

Đa số sinh viên Việt Nam học lập trình C là để luyện tư duy…

Kiểu Union trong C

Kiểu Union trong C

Union có cách khai báo giống như struct, nhưng kích thước của nó sẽ lấy…

Hàm đệ quy trong ngôn ngữ C

Hàm đệ quy trong ngôn ngữ C

Giải thuật đệ quy nói chung và trong ngôn ngữ C nói riêng thì hàm…

Top