Loading Now

Các kiểu dữ liệu trong C++

Các kiểu dữ liệu trong C++

Table of Contents

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

Contact