मैंने हाल ही में मानक सबसे तेज़ प्रकार, मुख्य रूप से int_fast32_t और int_fast64_t के अस्तित्व की खोज की है।intXX_t और int_fastXX_t के बीच क्या अंतर है?
मैं हमेशा बताया गया था कि, मुख्यधारा वास्तुकला पर सामान्य उपयोग के लिए, एक बेहतर इस्तेमाल करना चाहिए शास्त्रीय पूर्णांक & लंबे जो हमेशा प्रोसेसर डिफ़ॉल्ट पठन क्षमता के अनुरूप होनी चाहिए और इतने बेकार सांख्यिक रूपांतरण से बचें।
"typedef नाम int_fastN_t कम से कम एन की चौड़ाई typedef नाम uint_fastN_t सबसे तेजी से निर्दिष्ट के साथ सबसे तेजी से हस्ताक्षर किए पूर्णांक प्रकार निर्दिष्ट करता:
C99 स्टैंडर्ड में, यह §7.18.1.3p2 में कहते हैं कम से कम एन की चौड़ाई के साथ हस्ताक्षरित पूर्णांक प्रकार। "
और वहाँ भी §7.18.1.3p1 में इसके बारे में एक उद्धरण है:
"नामित प्रकार सभी प्रयोजनों के लिए सबसे तेजी से होने की गारंटी नहीं है, कार्यान्वयन को चुनने के लिए कोई स्पष्ट आधार है अगर एक प्रकार से अधिक एक प्रकार, यह केवल कुछ पूर्णांक प्रकार को हस्ताक्षर और चौड़ाई आवश्यकताओं को पूरा करेगा। "
यह क्या सबसे तेजी से वास्तव में इसका मतलब है मेरे लिए स्पष्ट नहीं है। मुझे समझ में नहीं आता कि मुझे इस प्रकार का उपयोग कब करना चाहिए और जब मुझे नहीं करना चाहिए।
मैं इस पर एक छोटे से googled और पाया कि कुछ opensourceprojects इसे करने के लिए उनके कार्यों के कुछ बदल दिया है, लेकिन उन सभी को नहीं किया है। उन्होंने वास्तव में यह नहीं बताया कि उन्होंने एक हिस्सा क्यों बदल दिया है, और केवल उनके कोड का एक हिस्सा है।
क्या आप जानते हैं कि विशिष्ट मामलों/उपयोग क्या हैं जब int_fastXX_t वास्तव में शास्त्रीय लोगों की तुलना में तेज हैं?
+1। मैं काफी समय से इस बारे में सोच रहा हूं, और [सी तर्क] (http://www.open-std.org/jtc1/sc22/wg14/www/C99RationaleV5.10.pdf) विषय पर शांत है । –