दिलचस्प पोस्ट
मक्खी पर वेक्टर स्थिरांक उत्पन्न करने के लिए सर्वोत्तम निर्देश अनुक्रम क्या हैं? जावा / एंड्रॉइड – कैसे एक पूर्ण स्टैक ट्रेस मुद्रित करें? क्यों `एक == बी या सी या डी 'हमेशा सही पर मूल्यांकन करता है? प्रतिनिधित्व में फ़्लोटिंग प्वाइंट एरर? हाइबरनेट @ किसी भी-संबंधित एनोटेशन का उपयोग कैसे करें? TypeLoadException 'कोई क्रियान्वयन नहीं' कहते हैं, लेकिन यह कार्यान्वित किया जाता है कोई इनपुट फ़ाइल निर्दिष्ट नहीं की गई X86 विधानसभा में शून्य को रजिस्टर करने का सबसे अच्छा तरीका क्या है: xor, mov या और? node.js fs.readdir रिकर्सिव निर्देशिका खोज आईओएस 8 कस्टम कीबोर्ड: ऊँचाई बदलना जावा प्रतिबिंब का उपयोग करके निजी स्थिर अंतिम क्षेत्र बदलें C ++ कोड C ++ 03 और C ++ 11 दोनों में मान्य हो सकता है लेकिन क्या अलग चीजें हैं? लम्मेटाइजेशन जावा जावा में ध्रुवीय ग्राफ खींचना क्या स्विफ्ट-आधारित एप्लिकेशन ओएस एक्स 10.9 / आईओएस 7 और कम पर काम करते हैं?

कैसे दो स्ट्रिंग literals के संयोजन में काम करता है?

char* a="dsa" "qwe"; printf("%s",a); 

आउटपुट: dsaqwe

मेरा प्रश्न यह है कि यह बात काम क्यों करती है अगर मैं दो स्ट्रिंग लीटरल के बीच अंतरिक्ष या कुछ भी नहीं देता है तो यह स्ट्रिंग लीटरल को जोड़ती है।

यह कैसे काम कर रहा है?

वेब के समाधान से एकत्रित समाधान "कैसे दो स्ट्रिंग literals के संयोजन में काम करता है?"

यह आईएसओ सी मानक द्वारा परिभाषित है, आसन्न स्ट्रिंग लीटरल को एक में जोड़ दिया गया है।

भाषा थोड़ी सूखी है (यह सभी के बाद एक मानक है) पर 6.4.5 String literals 11 के खंड 6.4.5 String literals हैं:

अनुवाद चरण 6 में, आसन्न चरित्र के किसी भी क्रम और समान रूप से प्रीफ़ेक्साइड चौड़े स्ट्रिंग शाब्दिक टोकनों द्वारा निर्दिष्ट मल्टीबाइट वर्ण अनुक्रम एक एकल multibyte वर्ण अनुक्रम में जोड़ दिया गया है।

यह 5.1.1.2 Translation phases, point 6 में भी 5.1.1.2 Translation phases, point 6 , थोड़ा अधिक संक्षेप में:

निकटस्थ स्ट्रिंग शाब्दिक टोकन को जोड़ दिया गया है।

इसका मूलतः इसका अर्थ है कि "abc" "def" "abcdef" लिए अलग नहीं है

यह अभी भी अच्छा स्वरूपण करते समय लंबी स्ट्रिंग बनाने के लिए उपयोगी होता है:

 char *myString = "This is a really long " "string and I don't want " "to make my lines in the " "editor too long, because " "I'm basically anal retentive :-)"; 

आपने अपने प्रश्न का उत्तर खुद ही दे दिया।

अगर मैं दो स्ट्रिंग लीटरल के बीच अंतरिक्ष या कुछ भी नहीं देता है तो यह स्ट्रिंग लीटरल को जोड़ती है।

यह सी वाक्यविन्यास की सुविधाओं में से एक है

और अपने अनचाहे सवाल का जवाब देने के लिए, "यह किस लिए अच्छा है?"

एक बात के लिए, आप स्ट्रिंग लीटरल्स में स्थिरांक डाल सकते हैं। तुम लिख सकते हो

 #define FIRST "John" #define LAST "Doe" const char* name = FIRST " " LAST; const char* salutation = "Dear " FIRST ","; 

और फिर यदि आपको बाद में नाम बदलने की ज़रूरत है, तो आपको इसे केवल एक जगह में बदलना होगा।
इस तरह बातें।

आईएसओ सी मानक §5.1.1.2 कहते हैं: –

  1. निकटस्थ स्ट्रिंग शाब्दिक टोकन को जोड़ दिया गया है।
  2. टोकन को अलग करने वाले व्हाइट-स्पेस वर्ण अब महत्वपूर्ण नहीं हैं।

मुझे पूरा यकीन है कि यह एक कंपाइलर सुविधा है।