Kiểu dữ liệu sử dụng thư viện stdint.h trong C/C++ | uint8_t, uint16_t, uint32_t and uint64_t?

Trong lập trình C/C++, có nhiều kiểu dữ liệu được cung cấp để người lập trình có thể sử dụng, bao gồm kiểu int để lưu số nguyên, kiểu char để lưu ký tự, và kiểu float để lưu số thực. Tuy nhiên, khi di chuyển mã nguồn từ một nền tảng hoặc trình biên dịch sang một nền tảng hoặc trình biên dịch khác, có thể gặp phải các sự khác biệt sau:

  • Các kiểu số nguyên như char, int có thể được định nghĩa là có dấu (signed char, signed int) hoặc không dấu (unsigned char, unsigned int) tùy thuộc vào trình biên dịch. Điều này có thể ảnh hưởng đến phạm vi giá trị có thể được lưu trữ.
  • Kích thước của các kiểu dữ liệu có thể thay đổi tùy thuộc vào hệ thống máy tính hoặc môi trường phát triển. Ví dụ, trong một số hệ thống máy tính cũ hoặc trên một số nền tảng như Arduino Uno, kích thước của kiểu int có thể chỉ là 2 byte thay vì 4 byte như thông thường.

Do đó, khi chuyển đổi mã nguồn C/C++ từ một nền tảng hoặc môi trường phát triển sang một nền tảng hoặc môi trường khác, người lập trình không chỉ cần quan tâm đến kích thước dữ liệu mà còn phải hiểu cách mà trình biên dịch cụ thể định nghĩa các kiểu dữ liệu.

C type stdint.h type Bits Sign Range
char uint8_t 8 Unsigned 0 .. 255
signed char int8_t 8 Signed -128 .. 127
unsigned short uint16_t 16 Unsigned 0 .. 65,535
short int16_t 16 Signed -32,768 .. 32,767
unsigned int uint32_t 32 Unsigned 0 .. 4,294,967,295
int int32_t 32 Signed -2,147,483,648 .. 2,147,483,647
unsigned long long uint64_t 64 Unsigned 0 .. 18,446,744,073,709,551,615
long long int64_t 64 Signed -9,223,372,036,854,775,808 .. 9,223,372,036,854,775,807

Hi vọng bài viết có thể giúp các bạn có 1 thói quen khai báo và sử dụng kiểu dữ liệu mới tốt hơn, có thể hiểu về kiểu dữ liệu để tránh được các lỗi sai cơ bản, và cũng không thấy xa lạ khi tham khảo một file code nào đó mà có các kiểu dữ liệu int8_t, int8_t, uint16_t, int16_t, uint32_t, int32_t

Nhận xét

Mới hơn Cũ hơn