Kích thước của các loại dữ liệu C tiêu chuẩn được xác định bởi việc thực hiện trình biên dịch. Theo tiêu chuẩn , một int phải có khả năng chứa các giá trị trong phạm vi từ -32767 đến 32767 (16 bit), nhưng có thể lớn hơn. Kích thước của một int thường là giá trị tự nhiên nhất cho CPU - kích thước từ hoặc kích thước của thanh ghi CPU.
Cách duy nhất để biết chắc chắn là tham khảo hướng dẫn sử dụng trình biên dịch của bạn hoặc viết mã kiểm tra. Bạn nên có một bản sao của hướng dẫn sử dụng cho trình biên dịch nhúng vì các chi tiết cụ thể về căn chỉnh và lưu trữ dữ liệu có nhiều khả năng quan trọng trong lập trình nhúng. Phần mở rộng trình biên dịch (như để hỗ trợ ngắt) cũng quan trọng hơn.
Nếu bạn có trình biên dịch tuân thủ C99, việc sử dụng các loại uintX_t được xác định trong sẽ dễ dàng hơn để có được kích thước bạn muốn.
Để tham khảo, đây là các kích thước tối thiểu cho các loại dữ liệu khác được lấy từ phần 5.2.4.2.1 của tiêu chuẩn C99. Lưu ý rằng số học bổ sung của hai là không bắt buộc, mặc dù tôi không biết bất kỳ máy bổ sung hoặc ký hiệu cường độ nào ở trên đỉnh đầu của tôi.
char (kích thước byte): sizeof (char) luôn bằng 1. Các ký tự đã ký phải giữ các giá trị trong phạm vi -127 đến 127. Các ký tự không dấu phải giữ các giá trị trong phạm vi 0 đến 255. Tiêu chuẩn cũng chỉ định số bit tối thiểu trong một char / byte, là 8.
viết tắt: -32767 đến 32767 cho chữ ký, 0 đến 65535 cho dấu không dấu. Tương đương với 16 bit.
int: Tương tự như ngắn.
dài: -2147483647 đến 2147483647 cho ký, 0 đến 4294967295 cho không dấu. Tương đương với 32 bit.
dài dài: -9223372036854775807 đến 9223372036854775807 để ký, 0 đến 18446744073709551615 cho không dấu. Tương đương với 64 bit.
con trỏ: Thực hiện xác định. Tiêu chuẩn cho phép "các yêu cầu đại diện và căn chỉnh" khác nhau cho các con trỏ tới các loại dữ liệu khác nhau, nhưng tôi chưa bao giờ thấy điều đó trong thực tế.