Khi nào nên dùng int32_t thay vì int khi lập trình C/C++ ?

Trong C/C++ thì ngoài các kiểu dữ liệu cơ bản như dành cho số nguyên như char, short, int, long, signed char, unsigned short, unsigned int, unsigned long thì còn có các kiểu dữ liệu cho số nguyên khác như int8_t, uint8_t, int16_t, uint16_t, int32_t, uint32_t, int64_t, uint64_t được định nghĩa trong file stdint.h (header có thể dùng cho C và C++), cstdint (header chỉ dùng cho C++ , chú ý là không có đuôi .h).

Nếu như size của các kiểu dữ liệu gốc char, short, int, long, signed char, … có thể khác nhau theo từng platform thì các kiểu dữ liệu int8_t, uint8_t, int16_t, uint16_t, int32_t, … defined trong stdint.hcstint thì có size cố định và không thay đổi trên các platform khác nhau. Ví dụ, kiểu int tùy từng platform có thể có size là 2 bytes (16 bits) hoặc 4 bytes (32 bits) nhưng int32_t thì luôn có size cố định là 4 bytes (32 bits) bất kể ở platform nào.

Vậy khi nào thì nên sử dụng các kiểu dữ liệu trong stdint.h/cstdint ?
  • Khi code các chương trình cho hệ thống nhúng, cần các biến có kích thước chính xác để xử lý các phép toán logic, các xử lý liên quan đến memory
  • Khi code các chương trình yêu cầu cao về tính portable sang các platform khác. Do khi chuyển sang platform khác thì size của các kiểu dữ liệu này không thay đổi nên giảm số lượng code cần modify.

— Phạm Minh Tuấn (Shun) —

   

Tham khảo: