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