
Các kiểu dữ liệu trong C++
Bài tập
Cho biến a
kiểu số nguyên, biết giá trị của biến a
luôn nằm trong khoảng [-1000, 1000]
, kiểu dữ liệu nào sau đây là phụ hợp nhất để khai báo biến a
.
Lý thuyết
Ở các bài trước bạn đã được học một số kiểu dữ liệu như short, int, long long, double, bool, ...
ngoài các kiểu dữ liệu này ra trong C++ còn một số kiểu dữ liệu nữa, xem bảng sau để hiểu rõ hơn:
Kiểu dữ liệu | Kích thước | Miền giá trị |
---|---|---|
bool | 1byte | 0 tới 1 |
char | 1byte | -128 tới 127 |
unsigned char | 1byte | 0 tới 255 |
int | 4bytes | -2147483648 tới 2147483647 |
unsigned int | 4bytes | 0 tới 4294967295 |
short | 2bytes | -32768 tới 32767 |
unsigned short | 2bytes | 0 tới 65,535 |
long long | 8bytes | -(263) tới (263) – 1 |
unsigned long long | 8bytes | 0 tới 18446744073709551615 |
float | 4bytes | |
double | 8bytes | |
string |
Ở trong bảng trên thì cột Kích thước được dùng để thể hiện số byte
mà chương trình cần để lưu trữ cho biến của kiểu dữ liệu tương ứng. Ví dụ nếu bạn khai báo biến a
kiểu int
thì chương trình sẽ cần sử dụng 4 bytes
trên RAM để lưu trữ biến a
. Cột kích thước không có giá trị cho biến kiểu string
do số bytes cần cho biến kiểu string
sẽ bị phụ thuộc vào số ký tự của nó.
Có thể thấy kiểu dữ liệu có miền giá trị càng lớn thì càng tốn bộ nhớ nên bạn cần chọn kiểu dữ liệu phù hợp cho các biến. Ví dụ bạn không nên dùng biến kiểu long long
chỉ để lưu trữ số học sinh của một lớp học hay số nhân viên của một công ty, thay vào đó bạn nên dùng kiểu dữ liệu short
hoặc int
.
Các kiểu dữ liệu mà có từ unsigned
đằng trước là các kiểu dữ liệu chỉ lưu trữ được các giá trị lớn hơn hoặc bằng 0
(unsigned
trong tiếng anh là không dấu, có thể hiểu là các số không có dấu -
đằng trước và đây là các số không âm).
Lưu ý: Khi sử dụng kiểu unsigned
với phép trừ thì bạn nên cẩn thận vì đây là kiểu dữ liệu không lưu được các giá trị âm, hãy xem ví dụ sau để hiểu hơn:
#include<iostream>
using namespace std;
int main(){
unsigned int a = 5;
unsigned int b = 8;
cout << a - b;
return 0;
}
Kết quả khi chạy chương trình:
4294967293
Post Comment