Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Tính phạm vi kiểu dữ liệu trong C++


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