Trong C++, có nhiều kiểu dữ liệu như int, char, double... Phần này trình bày cách lấy kích thước của chúng theo chương trình.
Ta có thể lấy kích thước kiểu dữ liệu tính bằng byte, nhân thêm 8 để ra số bit. Nếu số bit là n, phạm vi kiểu có dấu: -2^(n-1) đến 2^(n-1)-1. Kiểu không dấu: 0 đến 2^n-1.
Ví dụ minh họa
#include <iostream>
#include <cmath>
#define SIZE(x) sizeof(x) * 8 // Lấy kích thước tính bằng bit
using namespace std;
void getRange(string type, int n) {
if (type == "SIGNED") { // Kiểu có dấu
long long min = pow(2, n - 1);
long long max = pow(2, n - 1) - 1;
cout << "Khoang tu " << -min << " den " << max << endl;
} else { // Kiểu không dấu
unsigned long long range = pow(2, n) - 1;
cout << "Khoang tu 0 den " << range << endl;
}
}
int main() {
cout << "Signed int: "; getRange("SIGNED", SIZE(int));
cout << "Signed float: "; getRange("SIGNED", SIZE(float));
cout << "Unsigned int: "; getRange("UNSIGNED", SIZE(unsigned int));
cout << "Unsigned short: "; getRange("UNSIGNED", SIZE(unsigned short));
cout << "Signed char: "; getRange("SIGNED", SIZE(char));
}
Kết quả
Signed int: Khoang tu -2147483648 den 2147483647 Signed float: Khoang tu -2147483648 den 2147483647 Unsigned int: Khoang tu 0 den 4294967295 Unsigned short: Khoang tu 0 den 65535 Signed char: Khoang tu -128 den 127