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

Kiểu dữ liệu mở rộng (Extended Integral Types) trong C/C++

Kích thước các kiểu dữ liệu cơ bản trong C/C++ (int, long, v.v.) phụ thuộc vào trình biên dịch và kiến trúc (32-bit hay 64-bit). Để đảm bảo độ rộng chính xác, C99/C++11 cung cấp các kiểu kích thước cố định trong header <cstdint> (C++) hoặc <stdint.h> (C).

Các kiểu phổ biến

KiểuÝ nghĩaĐộ rộng
int8_tSố nguyên có dấu 8-bit-128 đến 127
uint8_tSố nguyên không dấu 8-bit0 đến 255
int16_tSố nguyên có dấu 16-bit-32,768 đến 32,767
uint16_tSố nguyên không dấu 16-bit0 đến 65,535
int32_tSố nguyên có dấu 32-bit-2,147,483,648 đến 2,147,483,647
uint32_tSố nguyên không dấu 32-bit0 đến 4,294,967,295
int64_tSố nguyên có dấu 64-bit-9.22e18 đến 9.22e18
uint64_tSố nguyên không dấu 64-bit0 đến 1.84e19

Ví dụ code C++

#include <iostream>
#include <cstdint> // Header bắt buộc
using namespace std;

int main() {
    uint8_t i; // Chắc chắn 8-bit unsigned
    
    i = 0;
    cout << "Giá trị nhỏ nhất: " << (int)i << endl; // 0
    
    i = 255;
    cout << "Giá trị lớn nhất: " << (int)i << endl; // 255
    
    // Vượt quá phạm vi → tràn số (wrap around)
    i = 2436; // 2436 % 256 = 132
    cout << "Giá trị vượt phạm vi: " << (int)i << endl; // 132
    
    // Các macro hữu ích
    cout << "INT32_MAX = " << INT32_MAX << endl;
    cout << "UINT16_MAX = " << UINT16_MAX << endl;
    
    return 0;
}

Đầu ra

Giá trị nhỏ nhất: 0
Giá trị lớn nhất: 255
Giá trị vượt phạm vi: 132

Khi nào nên dùng?

  • Lập trình nhúng, driver phần cứng, giao thức mạng (cần kích thước chính xác).
  • Lưu trữ dữ liệu nhị phân cross-platform.
  • Tối ưu bộ nhớ khi biết trước phạm vi giá trị.

Lưu ý

Các kiểu intN_t là optional (trình biên dịch không bắt buộc cung cấp), nhưng hầu hết compiler hiện đại (GCC, Clang, MSVC) đều hỗ trợ đầy đủ.