मैं एक int
प्रकार का उपयोग कर रहा हूं एक मान संग्रहीत करने के लिए। कार्यक्रम के शब्दार्थ द्वारा, मान हमेशा एक बहुत छोटी श्रेणी (0 - 36) में भिन्न होता है, और int
(ए char
) केवल सीपीयू दक्षता के कारण उपयोग किया जाता है।
ऐसा लगता है कि पूर्णांक की इतनी छोटी श्रृंखला पर कई विशेष अंकगणितीय अनुकूलन किए जा सकते हैं। उन पूर्णांकों पर कई फ़ंक्शन कॉल को "जादुई" संचालन के एक छोटे सेट में अनुकूलित किया जा सकता है, और कुछ फ़ंक्शन टेबल लुक-अप में भी अनुकूलित किए जा सकते हैं।
तो, क्या यह संकलक को बताना संभव है कि यह int
हमेशा उस छोटी सी सीमा में है, और क्या संकलक के लिए उन अनुकूलन करना संभव है?
unsigned
प्रकारों का उपयोग करने के लिए छोटे लाभ हो सकते हैं क्योंकि वे संकलक के लिए तर्क के लिए आसान होते हैं।
int
और unsigned int
64-बिट पॉइंटर्स वाले अधिकांश सिस्टम पर 32 से 64-बिट तक साइन-या शून्य-विस्तारित होने की आवश्यकता है। ध्यान दें कि x86-64 पर, 32-बिट रजिस्टरों पर परिचालन शून्य-64 के लिए नि: शुल्क -विस्तार करता है (साइन एक्सटेंशन नहीं है, लेकिन हस्ताक्षरित अतिप्रवाह अपरिभाषित व्यवहार है, इसलिए कंपाइलर 64-बिट हस्ताक्षरित गणित का उपयोग कर सकता है यदि वह चाहता है)। तो आप केवल 32-बिट फ़ंक्शन आर्ग को शून्य-विस्तारित करने के लिए अतिरिक्त निर्देश देखते हैं, गणना के परिणाम नहीं। आप संकीर्ण अहस्ताक्षरित प्रकारों के लिए चाहेंगे।