โปรดทราบเสมอว่า 'ขนาด' เป็นตัวแปรหากไม่ได้ระบุไว้อย่างชัดเจนดังนั้นหากคุณประกาศ
int i = 10;
ในบางระบบอาจทำให้เกิดจำนวนเต็ม 16 บิตโดยคอมไพเลอร์และในบางระบบอาจส่งผลให้เป็นจำนวนเต็ม 32 บิต (หรือจำนวนเต็ม 64 บิตในระบบที่ใหม่กว่า)
ในสภาพแวดล้อมแบบฝังสิ่งนี้อาจได้ผลลัพธ์แปลก ๆ (โดยเฉพาะในขณะที่จัดการกับหน่วยความจำที่แมป I / O หรืออาจพิจารณาสถานการณ์อาร์เรย์แบบธรรมดา) ดังนั้นจึงขอแนะนำอย่างยิ่งให้ระบุตัวแปรขนาดคงที่ ในระบบเดิมคุณอาจเจอ
typedef short INT16;
typedef int INT32;
typedef long INT64;
เริ่มจาก C99 นักออกแบบได้เพิ่มไฟล์ส่วนหัว stdint.h ซึ่งใช้ประโยชน์จาก typedef ที่คล้ายกัน
ในระบบที่ใช้ windows คุณอาจเห็นรายการในไฟล์ส่วนหัว stdin.h เป็นไฟล์
typedef signed char int8_t;
typedef signed short int16_t;
typedef signed int int32_t;
typedef unsigned char uint8_t;
มีมากกว่านั้นเช่นจำนวนเต็มความกว้างต่ำสุดหรือประเภทจำนวนเต็มความกว้างที่แน่นอนฉันคิดว่าการสำรวจ stdint.h ไม่ใช่เรื่องเลวร้ายเพื่อความเข้าใจที่ดีขึ้น
bool_t
- ไม่เคยได้ยินมาก่อน มาตรฐาน C กำหนด_Bool
ให้เป็นประเภทในตัวbool
ถูกกำหนดเฉพาะในกรณีที่คุณ#include <stdbool.h>
(เป็นมาโครที่ขยายเป็น_Bool
)