बीच int32
और int32_t
, (और इसी तरह के बीच int8
और int8_t
) अंतर बहुत सरल है: सी मानक परिभाषित करता है int8_t
और int32_t
, लेकिन कुछ भी नामित परिभाषित नहीं करता है int8
या int32
- उत्तरार्द्ध (अगर वे सब पर मौजूद हैं) कुछ अन्य शीर्ष लेख या लाइब्रेरी से शायद है (सबसे अधिक संभावना के अलावा पहले का है int8_t
और int32_t
C99 में)।
प्लेन int
दूसरों से काफी अलग है। जहाँ int8_t
और int32_t
प्रत्येक का एक निर्दिष्ट आकार है, int
किसी भी आकार> = 16 बिट्स हो सकता है। अलग-अलग समय पर, 16 बिट्स और 32 बिट्स दोनों सामान्य रूप से सामान्य रहे हैं (और 64-बिट कार्यान्वयन के लिए, यह संभवतः 64 बिट्स होना चाहिए)।
दूसरी ओर, int
सी के हर कार्यान्वयन में मौजूद होने की गारंटी है, जहां int8_t
और int32_t
नहीं हैं। यह शायद सवाल के लिए खुला है कि क्या यह आपके लिए मायने रखता है। यदि आप छोटे एम्बेडेड सिस्टम और / या पुराने संकलक पर सी का उपयोग करते हैं, तो यह एक समस्या हो सकती है। यदि आप इसे मुख्य रूप से डेस्कटॉप / सर्वर मशीनों पर एक आधुनिक संकलक के साथ उपयोग करते हैं, तो यह संभवतः नहीं होगा।
उफ़ - के बारे में हिस्सा याद किया char
। आप int8_t
चार के बजाय का उपयोग करेंगे (यदि और केवल अगर) तो आप चाहते हैं कि एक पूर्णांक प्रकार की गारंटी दी जाए जो आकार में बिल्कुल 8 बिट्स हो। यदि आप वर्ण संग्रहीत करना चाहते हैं, तो आप संभवतः char
इसके बजाय उपयोग करना चाहते हैं । इसका आकार अलग-अलग हो सकता है (बिट की संख्या के संदर्भ में) लेकिन यह बिल्कुल एक बाइट होने की गारंटी है। हालांकि एक मामूली विषमता: इस बारे में कोई गारंटी नहीं है कि क्या एक सादे char
हस्ताक्षरित या अहस्ताक्षरित है (और कई संकलक इसे या तो एक बना सकते हैं, एक संकलन-समय ध्वज के आधार पर)। यदि आपको यह सुनिश्चित करने की आवश्यकता है कि हस्ताक्षर या अहस्ताक्षरित हैं, तो आपको स्पष्ट रूप से निर्दिष्ट करने की आवश्यकता है।
bool_t
- इससे पहले कभी नहीं सुना। सी मानक_Bool
एक निर्मित प्रकार के रूप में परिभाषित करता है ।bool
केवल तभी परिभाषित किया जाता है यदि आप#include <stdbool.h>
(एक मैक्रो के रूप में जो विस्तार करते हैं_Bool
)।