2010-11-23 14 views
5

मैं जावा के बैकस्लैश के बारे में सोच रहा हूं। कंप्यूटर या कंपाइलर इस बैकस्लैश को कैसे देखता है और यह कंप्यूटर में कैसे संग्रहीत होता है?वापस स्लैश "" वास्तव में क्या मतलब है?

मैंने पढ़ा है कि बैकस्लैश निम्न वर्ण के विशेष अर्थ को हटा देता है। लेकिन कंप्यूटर इस तरह से कैसे व्यवहार करता है और किस स्थिति में इसे किसी अन्य तरीके से इलाज करता है?

उदाहरण के लिए सी प्रोग्रामिंग में शून्य वर्ण \0, स्ट्रिंग का अंत है, लेकिन क्या यह एक एकल वर्ण या दो वर्ण है, यानी बैकस्लैश + शून्य?

बैक स्लैश का उद्देश्य मनुष्यों के लिए इंगित करना या 0-1 कंप्यूटर के लिए इंगित करना है?

उत्तर

8

बैकस्लैश \ एक चरित्र है, जैसे A, कॉमा ,, और 4 की संख्या। कुछ प्रोग्रामिंग भाषाओं में, विशेष रूप से सी और इसके वंशज (और शायद पूर्वजों), यह अन्य पात्रों से बचने के लिए एक स्ट्रिंग या चरित्र शाब्दिक के अंदर प्रयोग किया जाता है। उदाहरण के लिए, '\a' घंटी वर्ण का प्रतिनिधित्व करता है, और यदि आप इसे प्रिंट करते हैं तो कंप्यूटर से एक बीप का उत्पादन करेगा (printf("%c", '\a'))।

सी-भाषा से बचने वाले चरित्र के रूप में, यह मोटे तौर पर संकलक द्वारा अनुमत मानव निर्माण है, इसलिए मनुष्य घंटी चरित्र व्यक्त कर सकते हैं। संकलित कोड बस चरित्र को स्टोर करता है - मूल्य 7 के साथ एक बाइट। बस बिल्कुल स्पष्ट होने के लिए, \ को a स्टोर करता है।

अन्य संदर्भों के तहत, बैकस्लैश का अर्थ रनटाइम पर प्रोग्राम के लिए कुछ है। इसका सबसे प्रसिद्ध उदाहरण नियमित अभिव्यक्ति वाक्यविन्यास है, जिसमें बैकस्लैश अन्य वर्णों से बचने के लिए उन्हें विशेष अर्थ देता है या उनके पास एक विशेष अर्थ ले सकता है। उदाहरण के लिए, grep '\<foo\>' file.txt फ़ाइल.txt में foo शब्द के साथ लाइनों का पता लगाएगा। इस मामले में बैकस्लाश वास्तव में रनटाइम पर हैं, और प्रोग्राम द्वारा व्याख्या की जाती है क्योंकि < और > के लिए भाग निकलता है जो उनका अनुसरण करते हैं। इस मामले में, \< और \> बिल्कुल वर्णों का प्रतिनिधित्व नहीं करते हैं; वे क्रमशः एक शब्द की शुरुआत और अंत के खिलाफ एक शून्य चौड़ाई मैच इंगित करते हैं।

+0

हाय, मार्सेलो, आपके विस्तृत उत्तर के लिए धन्यवाद। केवल एक चीज, जब हम स्ट्रिंग प्रसंस्करण जैसे सी प्रोग्राम बनाते हैं, हम मनुष्य के रूप में, स्ट्रिंग के अंत के साथ हमारे ऑपरेशन को व्यक्त करने के लिए प्रोग्राम में "\ 0" का उपयोग करते हैं। फिर, कंपाइलर क्या करता है? "\" संग्रहीत है या निम्नलिखित वर्ण "0" (या आपके उदाहरण में "ए" संग्रहित है? फिर, जब प्रोग्राम निष्पादित होता है, तो कोड इस संग्रहीत मूल्य के साथ कैसे प्रतिक्रिया करता है या प्राप्त करता है? – pepero

+0

@pepero: \ 0 के साथ स्ट्रिंग को समाप्त करने के मामले में, संग्रहीत मान शून्य के मान के साथ एक बाइट है (कोई बिट सेट नहीं है)। तारों के अंत को खोजने की अनुमति देने के लिए यह एक और सी रूपांतरण होता है। – BCS

+0

@pepero: मुझे लगता है कि मैंने अपना संपादित उत्तर सहेजने से पहले अपनी टिप्पणी की है, जो इस बिंदु को स्पष्ट रूप से दूसरे पैराग्राफ में शामिल करता है। मैंने किसी भी संभावित अस्पष्टता को खत्म करने के लिए इसे थोड़ा सा tweaked किया है। –

7

यह वास्तव में संदर्भ पर पूरी तरह से पर निर्भर करता है। बैकस्लाश का मतलब कई अलग-अलग चीजों का हो सकता है, इस पर निर्भर करता है कि आप उन्हें कहां देखते हैं। उदाहरण के लिए, विंडोज़ में, बैकस्लाश आमतौर पर पथ विभाजक के रूप में पाए जाते हैं।

सी-आधारित प्रोग्रामिंग भाषाओं (साथ ही अन्य स्क्रिप्टिंग भाषाओं) में, वे escape characters हैं। वे इंगित करते हैं कि उनके अधिकार के चरित्र को सामान्य रूप से जिस तरह से किया जाएगा उससे अलग तरीके से व्याख्या की जानी चाहिए। आपके उदाहरण में, \0 एक शून्य टर्मिनेटर है, और बैकस्लैश इंगित करता है कि 0 को कंपाइलर (और मानव!) द्वारा शून्य संख्या के बजाय शून्य वर्ण के रूप में व्याख्या किया जाना चाहिए। इसे केवल एक वर्ण के रूप में देखा जाएगा क्योंकि बैकस्लैश को इसके कार्य के बाद बंद कर दिया गया है- इसका अनुक्रम उस भाग में बचने के चरित्र के रूप में उपयोग से परे नहीं है।

+0

भागने के लिए एक और स्रोत: http://msdn.microsoft.com/en-us/library/h21280bw(VS.80)।एएसपीएक्स यह ध्यान रखना दिलचस्प है कि इसमें स्पष्ट रूप से \ 0 – BCS

+0

@BCS शामिल नहीं हैं: मुझे यकीन है कि एमएसडीएन दस्तावेज में यह एक और दिलचस्प नहीं है। इसका स्पष्ट रूप से उल्लेख किया गया है [यहां] (http://msdn.microsoft.com/en-us/library/6aw8xdf2.aspx)। –

+0

यह दिलचस्प है क्योंकि यह * अंतर्निहित * ऑक्टल अक्षरों के हिस्से के रूप में उल्लेख किया गया है। – BCS

0

बैकस्लैश का मतलब केवल कुछ विशेष है यदि स्थिति में इसका उपयोग किया जाता है। उदाहरण के लिए, कई प्रोग्रामिंग भाषाएं उन्हें तारों में escape characters के रूप में उपयोग करती हैं। यह आमतौर पर अगले चरित्र के अर्थ को बदलता है।

संबंधित मुद्दे