Hãy luôn nhớ rằng 'kích thước' có thể thay đổi nếu không được chỉ định rõ ràng, vì vậy nếu bạn khai báo
int i = 10;
Trên một số hệ thống, nó có thể dẫn đến số nguyên 16 bit bằng trình biên dịch và trên một số hệ thống khác, nó có thể dẫn đến số nguyên 32 bit (hoặc số nguyên 64 bit trên các hệ thống mới hơn).
Trong môi trường nhúng, điều này có thể dẫn đến kết quả kỳ lạ (đặc biệt là trong khi xử lý I / O được ánh xạ bộ nhớ hoặc có thể được coi là một tình huống mảng đơn giản), do đó, chúng tôi khuyên bạn nên chỉ định các biến kích thước cố định. Trong các hệ thống cũ, bạn có thể bắt gặp
typedef short INT16;
typedef int INT32;
typedef long INT64;
Bắt đầu từ C99, các nhà thiết kế đã thêm tệp tiêu đề stdint.h về cơ bản tận dụng các typedef tương tự.
Trên hệ thống dựa trên windows, bạn có thể thấy các mục nhập trong tệp tiêu đề stdin.h như
typedef signed char int8_t;
typedef signed short int16_t;
typedef signed int int32_t;
typedef unsigned char uint8_t;
Có khá nhiều thứ khác như số nguyên chiều rộng tối thiểu hoặc các loại số nguyên chiều rộng chính xác, tôi nghĩ không phải là một điều tồi tệ để khám phá stdint.h để hiểu rõ hơn.
bool_t
- chưa bao giờ nghe nói về cái đó trước đây. Tiêu chuẩn C định nghĩa_Bool
là một kiểu cài sẵn.bool
được xác định chỉ khi bạn#include <stdbool.h>
(dưới dạng macro mở rộng thành_Bool
).