1. Kiểu dữ liệu là gì?
1.1. Dữ liệu và kiểu dữ liệu
Mọi chương trình đều cần đến dữ liệu. Ví dụ chương trình sau:
int main()
{
cout<<"LAP TRINH C/C++";
system("pause");
}
Một chương trình xuất ra màn hình đơn giản cũng cần dữ liệu
Chương trình trên cần lưu trữ dữ liệu “LAP TRINH C/C++” để xuất ra màn hình. Hay một chương trình giải phương trình bậc 2 cần lưu trữ dữ liệu các hệ số a, b,c, giá trị Delta, các nghiệm của phương trình.
Một chương trình quản lý nhân sự cần dữ liệu mã số nhân sự, họ tên, hệ số lương,…
Dữ liệu mà chương trình lưu trữ có thể thuộc nhiều dạng khác nhau, gọi là kiểu dữ liệu (data type):
- Ký tự (character), một chuỗi như “LAP TRINH C/C++”
- Trạng thái: có hay không, đúng hay sai
- Các con số nguyên, số thực,…
- Một dãy các giá trị, một tổ hợp các giá trị (struct, class)
- …
Ngoài tính chất lưu trữ khác nhau, chương trình cũng cần thiết phân biệt các kiểu dữ liệu nói trên. Vì mỗi kiểu quy định thông tin đi kèm khác nhau, cách tổ chức lưu trữ khác nhau.
Vậy ngôn ngữ lập trình phân biệt các kiểu dữ liệu như thế nào?
Ngôn ngữ C/C++ (các ngôn ngữ khác cũng vậy) quy ước ngữ nghĩa với một loạt các tên kiểu dữ liệu mà nó cung cấp sẵn. Tên các kiểu có sẵn này đã được gắn sẵn ngữ nghĩa nên nó là từ khoá. Ngoài ra, các ngôn ngữ lập trình cũng cung cấp cơ chế để lập trình viên tự định nghĩa các kiểu dữ liệu cho riêng mình.
1.2. Ngôn ngữ lập trình C++ hỗ trợ các kiểu dữ liệu nào?
– Kiểu dữ liệu cơ bản (Fundamental Data Type): Tên kiểu là từ khoá, ngữa nghĩa của tên này được quy định bởi ngôn ngữ lập trình.
– Kiểu dữ liệu do lập trình viên định nghĩa (User-defined Data Type): Tên kiểu do người lập trình đặt ra. Các kiểu dữ liệu dạng này trong C++ như struct, class,…
– Kiểu dữ liệu dẫn xuất (Derived Data Type): C++ cung cấp các ký hiệu để tạo ra kiểu mới từ các kiểu khác. Ví dụ: Mảng (array) các ký tự, các số nguyên, các số thực hay con trỏ (pointer).
– Kiểu dữ liệu Enum (Enum Data Type): tham khảo bài Kiểu dữ liệu enum trong C++.
2. Các kiểu dữ liệu cơ bản trong C++
Phải nhớ từ khóa và phạm vi giá trị của các kiểu dữ liệu để sử dụng chính xác.Kiểu dữ liệu Từ khóa Kích thước (bytes) Phạm vi giá trị Số nguyên int 4 –2.147.483.648 đến +2.147.483.647 Số thực float 4 +/- 3.4E +/- 38 Số thực double 8 +/- 1.7E +/- 308 Ký tự char 1 -128 đến 127 hoặc 0 đến 255 Ký tự wchar_t 2 0 đến 65.535 Luận lý (Boolean) bool 1 true hoặc false (1 hoặc 0) Không kiểu (Valueless) void
3. Modifiers của kiểu dữ liệu trong C++
Ngôn ngữ C++ cho phép các modifiers đứng trước các kiểu dữ liệu cơ bản. Mục đích là thay đổi ý nghĩa của các kiểu dữ liệu cơ bản.
Các modifiers được hỗ trợ trong C++ là signed (có dấu), unsigned (không dấu), short, long.Từ khóa Kích thước (bytes) Phạm vi giá trị Modifier của kiểu int short int 2 -32.768 đến 32.767 unsigned short int 2 0 đến 65.535 unsigned int 4 0 đến 4.294.967.295 long int 4 -2.147.483.648 đến 2.147.483.647 unsigned long int 4 0 đến 4.294.967.295 long long int 8 -(2^63) đến (2^63)-1 unsigned long long int 8 0 đến 18.446.744.073.709.551.615 Modifier của kiểu char signed char 1 -128 đến 127 unsigned char 1 0 đến 255 Modifier của kiểu double long double 8 +/- 1.7E +/- 308
4. Chương trình in kích thước kiểu dữ liệu
Sử dụng hàm sizeof để in ra số bytes của các kiểu dữ liệu.
#include <iostream>
using namespace std;
int main()
{
cout << "Kich thuoc cua char la: " << sizeof(char) <<" byte"<< endl;
cout << "Kich thuoc cua int la: " << sizeof(int) <<" byte"<< endl;
cout << "Kich thuoc cua short int la: " << sizeof(short int) <<" byte"<< endl;
cout << "Kich thuoc cua long int la: " << sizeof(long int) <<" byte"<< endl;
cout << "Kich thuoc cua float la: " << sizeof(float) <<" byte"<< endl;
cout << "Kich thuoc cua double la: " << sizeof(double) <<" byte"<< endl;
cout << "Kich thuoc cua wchar_t la: " << sizeof(wchar_t) <<" byte"<< endl;
system("pause");
}
Kết quả:
Kich thuoc cua char la: 1 byte
Kich thuoc cua int la: 4 byte
Kich thuoc cua short int la: 2 byte
Kich thuoc cua long int la: 4 byte
Kich thuoc cua float la: 4 byte
Kich thuoc cua double la: 8 byte
Kich thuoc cua wchar_t la: 2 byte