# Kiểu dữ liệu trong C++ Trong ngôn ngữ lập trình C/C++ gồm có 4 kiểu dữ liệu cơ sở do ngôn ngữ lâp trình mặc định sẵn cho người lập trình sử dụng. Tên kiểu dữ liệu phải được **viết thường**, không được phép viết in hoa. \+ Kiểu kí tự: char. \+ Kiểu số nguyên: int , short, long .. \+ Kiểu số thực: float, double… \+ Kiểu luận lý: true (đúng), false (sai). Bảng mô tả:
**Tên****Độ lớn (byte)****Mô tả****Vùng giá trị**
***char*** 1Kí tự hay kiểu số nguyên 8 – bit 256 kí tự trong bảng mã ASCII. **Có dấu**: -128 to 127 **Không dấu**: 0 to 255
***short***2Kiểu số nguyên 16 – bit**Có dấu**: -32763to 32762 **Không dấu**: 0 to 65535
***long***4Kiểu số nguyên 32 – bit**Có dấu**: -2.147.483.648 to 2.147.483.648 **Không dấu**: 0 to 4.294.967.295
***int*** \*Số nguyên. Độ lớn của nó phụ thuộc vào hệ điều hành, như trong MS-DOS nó là 16-bit, trên Windows 9x/2000/NT là 32 – bit…\*
***float***4Dạng dấu phẩy động với độ chính xác đơn3.4e-38 -> 3.4e38
***double***8Dạng dấu phẩy động với độ chính xác kép1.7e-308 -> 1.7e308
***bool***1Gía trị logic. Nó mới được thêm vào chuẩn ANSI-C++. Bởi vậy không phải tất cả các trình biên dịch đều hỗ trợ nótrue hoặc false
\- Ví dụ với kiểu float, giá trị dương lớn nhất là 3.4e38 =3.4\*1038 và số dương nhỏ nhất có thể biểu diễn là 3.4e-38 = 3.4\*10-38 \- Tuy nhiên, do số chữ số trong phần định trị là giới hạn nên số chữ số đáng tin cậy (hay ta nói là số chữ số có nghĩa) cũng giới hạn với kiểu float là 7-8 chữ số, double là 15 chữ số, và long double là 18-19 chữ số. **Lưu ý** (\*) Thông thường thì bạn đã tham khảo qua các loại tài liệu, hay các bài chia sẻ về kích thước (độ lớn ) của các kiểu dữ liệu thì vô tình người ta có nhắc đến kiểu **int** – độ lớn của nó là **2 byte,** thì đó có thể là các tài liệu cũ. Tại 1 thời điểm nhất định có thể nó là chuẩn mực được quy ước. Nhưng hiện nay đa số các tài liệu được cập nhật thì kiểu **int** – độ lớn của nó thường là **4 byte**. Hầu hết ở các trình biên dịch hiện đại ngày nay thì các bạn có thể thấy rằng kiểu **int** – được mặc định là 32bit – tức **4 byte**. \- Có những tranh cãi giữa các lập trình viên đã diễn ra cho vấn đề liệu rằng, kiểu int là **2 byte** hay là **4 byte**. Để đi đến tính thống nhất cho các lập luận của những lập trình viên, các nhà lập trình chuyên nghiệp đã dùng hàm **sizeof()** – để xác định kích thước của 1 kiểu dữ liệu đang sử dụng trên nền tảng và trình biên dịch hiện tại của mỗi lập trình viên. Bởi vì kích thước (độ lớn) của 1 kiểu dữ liệu có thể phụ thuộc vào nền tảng và trình biên dịch compiler mà bạn đang sử dụng. Vì vậy chỉ có thể dùng hàm **sizeof(<kiểu dữ liệu…>)** mới có thể xác định đúng kích thước của 1 kiểu dữ liệu. \- Nói 1 cách dễ hiểu, **sizeof()** là 1 hàm dùng để xác định kích thước của 1 kiểu dữ liệu trên nền tảng và trình biên dịch mà bạn đang sử dụng. Nó trả về kích thước tính theo byte của 1 kiểu dữ liệu cơ sở, con trỏ, mảng, hay 1 kiểu dữ liệu cấu trúc do lập trình viên định nghĩa