दिलचस्प पोस्ट
एसक्यूएल सर्वर बनाम बनाम प्रदर्शन XML / HTML के लिए NSString एनकोड करें निर्भरता उलटा सिद्धांत क्या है और यह महत्वपूर्ण क्यों है? यदि मूल्य * है * निर्दिष्ट निर्दिष्ट एक है, तो समारोह से बाहर नहीं मोबाइल उपकरणों पर सीएसएस होवर काम करता है? लॉन्चर में घातक त्रुटि: "\ Program Files (x86) \ Python33 \ python.exe" "C: \ Program Files (x86) \ Python33 \ pip.exe" "" का उपयोग करके प्रक्रिया बनाने में असमर्थ: कमांडलाइन से कई सीडीटी सी ++ प्रोजेक्ट बनाएं सभी एसक्यूएल प्रश्नों को लॉग करें JQuery का उपयोग कर समानांतर एसिंक्रोनस अजाक्स अनुरोध सीएसएस डिस्प्ले: इनलाइन बनाम इनलाइन-ब्लॉक LINQ में डायनेमिक WHERE क्लॉज मास्टर की चौड़ाई UISplitViewController में बदलें कैसे सी में एक चार सरणी कॉपी करने के लिए? जावा 8 की वैकल्पिक स्ट्रीम फ्लैटमैप के साथ प्रयोग करना स्ट्रिंग को पूर्णांक की तुलना अजीब परिणाम देता है

क्या सी 8 9 मानक के अनुसार स्ट्रिंग लीटरल के अपरिभाषित व्यवहार का संशोधन है?

मेरा मानना ​​है कि सी 99 में, स्ट्रिंग लीटरल्स का संशोधन अपरिभाषित व्यवहार है। मेरे पास उस मानक की एक प्रति नहीं है लेकिन मेरे पास सी 1 एक्स (एन 1570) का ड्राफ्ट है जो 6.4.5 पैराग्राफ 7 में बताता है:

यह अनिर्दिष्ट है कि क्या ये सरणियां अलग-अलग हैं या नहीं, उनके तत्वों को उपयुक्त मान हैं। यदि प्रोग्राम इस तरह के एक सरणी को संशोधित करने का प्रयास करता है, तो व्यवहार अनिर्धारित है।

मुझे एक स्टैक अतिप्रवाह प्रश्न मिला है जो इस विषय पर छूता है और इसमें जोनाथन लेफ्लेर से निम्नलिखित टिप्पणी है:

मूल रूप से, सी 9 8 9 (सी 90) मानक ने लीटरल को संशोधित करने के लिए गैरकानूनी नहीं ठहराया क्योंकि उस मानक से पहले बहुत अधिक कोड लिखे गए थे जो इसके द्वारा टूट जाएगा।

लेकिन मैंने स्ट्रिंग लीटरल्स के प्रकार और तथ्य यह है कि वे char[N] और const char[N] के बारे में बहुत सारी चर्चाएं भी नहीं देखी हैं। मैं इकट्ठा करता हूं कि यह निर्णय लिया गया ताकि मौजूदा कोड का बड़ा हिस्सा तोड़ न जाए।

कोई मुझे एक निश्चित जवाब दे सकता है सी 8 9 में स्ट्रिंग का शाब्दिक संशोधन यूबी है?

वेब के समाधान से एकत्रित समाधान "क्या सी 8 9 मानक के अनुसार स्ट्रिंग लीटरल के अपरिभाषित व्यवहार का संशोधन है?"

हाँ, वे C89 में गैर-परिवर्तनीय हैं।

(सी 90, 6.1.4) "यदि प्रोग्राम किसी भी रूप का स्ट्रिंग शब्दशः संशोधित करने का प्रयास करता है, तो व्यवहार अनिर्धारित है"

यहां तक ​​कि के एंड आर 2 संस्करण में, स्ट्रिंग लीटरल्स की अपरिपक्वता के संबंध में उद्धरण हैं।

(के एंड आर 2, 5.5) "यदि आप स्ट्रिंग सामग्री को संशोधित करने का प्रयास करते हैं तो इसका परिणाम अनिर्धारित है"

(कश्मीर एंड आर 2, परिशिष्ट सी) "स्ट्रिंग्स अब परिवर्तनीय नहीं हैं, और इसलिए केवल पढ़ने के लिए मेमोरी में रखी जा सकती हैं"

एएनएसआई सी 9 9 के तर्क में, यह स्पष्ट नहीं है कि यह गैर-परिवर्तनीय क्यों है:

(एएनएसआई सी 9 9 तर्क, 3.1.4) "स्ट्रिंग लीटरल्स को अनमोडिएबल होने के लिए निर्दिष्ट किया गया है। यह विनिर्देश कार्यान्वयन को समान पाठ के साथ स्ट्रिंग की प्रतियां साझा करने की अनुमति देता है, केवल पढ़ने के लिए मेमोरी में स्ट्रिंग लिटरल्स को स्थानांतरित करने और कुछ अनुकूलन करने के लिए।"