मैंने अपनी परियोजनाओं में निश्चित रूप से निश्चित पूर्णांक प्रकारों पर स्विच किया क्योंकि मुख्य रूप से वे मुझे पूर्णांक आकारों के बारे में सोचने में अधिक स्पष्ट रूप से सोचने में मदद करते हैं। #include <inttypes.h>
के माध्यम से उन्हें भी शामिल है भी मुद्रण मैक्रो PRIu32
, PRIu64
, ...मुझे UINT32_C(), INT32_C(), ... में मैक्रोज़ का उपयोग कब करना चाहिए?
एक निश्चित लंबाई चर रहा UINT32_C()
और INT32_C()
तरह मैक्रो का उपयोग कर सकते हैं करने के लिए एक स्थिर मान असाइन करने के लिए जैसे अन्य मैक्रो का एक समूह भी शामिल है। जब भी मैंने निरंतर मूल्य आवंटित किया तो मैंने उनका उपयोग करना शुरू कर दिया।
यह इस के समान कोड की ओर जाता है:
uint64_t i;
for (i = UINT64_C(0); i < UINT64_C(10); i++) { ... }
अब मैं कई उदाहरण है जो उस के बारे में परवाह नहीं देखा। एक stdbool.h
फ़ाइल शामिल है:
#define bool _Bool
#define false 0
#define true 1
bool
मेरी मशीन पर 1 बाइट के आकार की है, तो यह एक int
तरह नहीं दिखता है। लेकिन 0
और 1
पूर्णांक होना चाहिए जो स्वचालित रूप से कंपाइलर द्वारा सही प्रकार में बदल दिया जाना चाहिए। तो मुझे लगता है कि प्रयोग करेंगे मेरी उदाहरण में कोड बहुत आसान होता पढ़ने के लिए:
uint64_t i;
for (i = 0; i < 10; i++) { ... }
तो जब मैं UINT32_C()
की तरह निश्चित लंबाई लगातार मैक्रो का उपयोग करना चाहिए जब मैं संकलक करने के लिए है कि काम छोड़ देना चाहिए (मैं कर रहा हूँ जीसीसी का उपयोग कर)? अगर मैं मिसरा सी में कोड लिखूंगा तो क्या होगा?
व्यक्तिगत रूप से मैं निश्चित चौड़ाई प्रकारों का उपयोग करने से दूर शर्मिंदा हूं: सभी कंपाइलर्स उनका समर्थन नहीं करते हैं और इन प्रकारों के साथ पदोन्नति नियम व्यावहारिक रूप से अस्तित्व में नहीं हैं - मेरी विनम्र राय में सी मानक में एक बड़ी निगरानी है। हालांकि सवाल के लिए उपरोक्त। – Bathsheba
दिलचस्प सवाल, – cat
उत्तरों को देखने के लिए इंतजार नहीं कर सकता है यदि आपको 'बिट '32 बिट्स से कम है तो आपको उनकी आवश्यकता हो सकती है। – nwellnhof