C++: Bài 4. Kiểu dữ liệu


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

Để lưu trữ các loại thông tin dữ liệu khác nhau thì ta cần sử dụng các biến với những kiểu dữ liệu khác nhau như character, integer, floating point, double floating point, boolean. Mỗi kiểu dữ liệu sẽ được hệ điều hành cấp phát một vùng nhớ khác nhau.

Kiểu dữ liệu nguyên thủy có sẵn

C++ cung cấp cho ta 7 kiểu dữ liệu như sau:

Tên kiểu Ký hiệu
Boolean bool
Character char
Integer int
Floating point float
Double floating point double
Valueless void
Wide character wchar_t

Một số kiểu dữ liệu ở trên lại có thể kết hợp với những bổ từ sau để cho ra các kiểu dữ liệu mới:

  • signed
  • unsigned
  • short
  • long

Bảng sau đây thể hiện thông tin chi tiết về các kiểu dữ liệu của C++:

Kiểu Cấp phát vùng nhớ Miền giá trị
char 1byte -127 tới 127 hoặc 0 tới 255
unsigned char 1byte 0 tới 255
signed char 1byte -127 tới 127
int 4byte -2147483648 tới 2147483647
unsigned int 4byte 0 tới 4294967295
signed int 4byte -2147483648 tới 2147483647
short int 2byte -32768 tới 32767
unsigned short int Range 0 tới 65,535
signed short int Range -32768 tới 32767
long int 4byte -2,147,483,648 tới 2,147,483,647
signed long int 4byte tương tự long int
unsigned long int 4byte 0 tới 4,294,967,295
float 4byte +/- 3.4e +/- 38 (~7 con số)
double 8byte +/- 1.7e +/- 308 (~15 con số)
long double 8byte +/- 1.7e +/- 308 (~15 con số)
wchar_t 2 hoặc 4 byte 1 wide character

Kích thước của các biến có thể khác với kích thước được hiển thị trong bảng trên, tùy thuộc vào trình biên dịch và máy tính bạn đang sử dụng.

Sau đây là ví dụ, sẽ tạo ra kích thước chính xác của nhiều loại dữ liệu khác nhau trên máy tính của bạn.

#include <iostream>
using namespace std;

main() {
  cout << "Size of char : " << sizeof(char) << endl;
  cout << "Size of int : " << sizeof(int) << endl;
  cout << "Size of short int : " << sizeof(short int) << endl;
  cout << "Size of long int : " << sizeof(long int) << endl;
  cout << "Size of float : " << sizeof(float) << endl;
  cout << "Size of double : " << sizeof(double) << endl;
  cout << "Size of wchar_t : " << sizeof(wchar_t) << endl;

  return 0;
}

Ví dụ trên sử dụng endl, sẽ chèn một ký tự dòng mới sau mỗi dòng và toán tử << đang được sử dụng để chuyển nhiều giá trị ra màn hình. Ở đây ta có sử dụng phương thức sizeof() để lấy kích thước của nhiều kiểu dữ liệu khác nhau.

Khi ví dụ trên được biên dịch và thực thi, nó tạo ra kết quả như sau và có thể khác nhau giữa các máy:

Size of char : 1
Size of int : 4
Size of short int : 2
Size of long int : 4
Size of float : 4
Size of double : 8
Size of wchar_t : 4

Khai báo typedef

Bạn có thể tạo tên mới cho kiểu hiện có bằng typedef. Sau đây là cú pháp đơn giản để xác định một kiểu mới bằng typedef:

typedef type newname; 

Ví dụ, phần sau cho trình biên dịch biết rằng feet là một tên khác của int:

typedef int feet;

Bây giờ, khai báo sau là hoàn toàn hợp lệ:

feet distance; //to mt biến kiu int có tên distance

Kiểu enum

Kiểu liệt kê (enum) khai báo tên kiểu tùy chọn và một tập hợp không hoặc nhiều giá trị có thể được sử dụng làm giá trị của kiểu. Mỗi phần tử trong tập hợp là một hằng số có kiểu là kiểu liệt kê.

Để tạo kiểu liệt kê thì ta sử dụng từ khóa enum. Dạng tổng quát của kiểu liệt kê là như sau:

enum enum-name { list of names } var-list;

Ở đây, enum-name là tên kiểu của enum. Danh sách tên được phân tách bằng dấu phẩy.

Ví dụ, đoạn mã sau đây tạo một danh sách các màu gọi là color và biến c có kiểu color. Cuối cùng, c được gán giá trị "blue".

enum color { red, green, blue } c;
c = blue;

Theo mặc định, giá trị của tên đầu tiên có chỉ số 0, tên thứ hai có chỉ số là 1, v.v. Nhưng bạn có thể đặt tên, giá trị cụ thể bằng cách thêm bộ khởi tạo. Ví dụ, trong bảng liệt kê sau, màu green sẽ có giá trị 5.

enum color { red, green = 5, blue };

Ở đây, màu blue sẽ có giá trị là 6 vì mỗi tên sẽ lớn hơn một tên đứng trước nó.


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