auto
एक पुराना C कीवर्ड है जिसका अर्थ है "स्थानीय गुंजाइश"। auto a
के रूप में ही है auto int a
, और क्योंकि स्थानीय गुंजाइश एक फ़ंक्शन के अंदर घोषित एक चर के लिए डिफ़ॉल्ट है, यह int a
इस उदाहरण में भी समान है ।
यह कीवर्ड वास्तव में सी के पूर्ववर्ती बी से एक बचे हुए हैं, जहां कोई आधार प्रकार नहीं थे: सब कुछ था int
, सूचक int
, की सरणी int
(*) घोषणाएं auto
या तो होंगी या extrn
[sic]। C को "सब कुछ है int
" एक डिफ़ॉल्ट नियम के रूप में विरासत में मिला है , इसलिए आप पूर्णांकों की घोषणा कर सकते हैं
auto a;
extern b;
static c;
आईएसओ सी को इससे छुटकारा मिल गया, लेकिन कई कंपाइलर्स अभी भी इसे पिछड़ी संगतता के लिए स्वीकार करते हैं। यदि यह अपरिचित लगता है, तो आपको महसूस करना चाहिए कि संबंधित नियम काम में है
unsigned d; // actually unsigned int
जो आधुनिक कोड में अभी भी सामान्य है।
C ++ 11 ने कीवर्ड का पुन: उपयोग किया, जो कि यदि कोई C ++ प्रोग्रामर मूल अर्थ के साथ उपयोग कर रहा है, तो इसके प्रकार के अनुमान के लिए। यह ज्यादातर सुरक्षित है क्योंकि int
C से "सब कुछ है " नियम पहले ही C ++ 98 में हटा दिया गया था; केवल एक चीज जो टूटती है auto T a
, वह है जो कोई भी वैसे भी उपयोग नहीं कर रहा था। ( भाषा के इतिहास पर उनके पत्रों में कहीं , स्ट्रॉन्स्ट्रुप इस पर टिप्पणी करता है, लेकिन मुझे अभी इसका सटीक संदर्भ नहीं मिल सकता है।)
(*) B में स्ट्रिंग हैंडलिंग दिलचस्प था: आप int
प्रत्येक सदस्य में कई वर्णों के सरणियों का उपयोग और पैक करेंगे। बी वास्तव में अलग वाक्यविन्यास के साथ बीसीपीएल था ।
int
1999 में सी मानक से हटा दिया गया