दिलचस्प पोस्ट
एक्सेल वीबीए में एक वैश्विक चर का जीवनकाल क्या है? एक विधि को लागू करने पर एक घटना ट्रिगर करने के लिए C # विशेषता मैं डॉकर्स की छवियों को कैसे हटा सकता हूं? क्या विदेशी मुद्रा स्वचालित रूप से डिस्पोजेबल कॉल करता है? मैं ASP.Net MVC रूटिंग का उपयोग कर मार्ग कैसे करूं? UIViewController पर UIViewController पेश करने का प्रयास करना, जिसका दृश्य विंडो पदानुक्रम में नहीं है क्या जावा में स्वैप विधि लिखना संभव है? अतुल्यकालिक जावास्क्रिप्ट निष्पादन कैसे होता है? और जब रिटर्न स्टेटमेंट का उपयोग नहीं करते हैं? आपका पासवर्ड नमस्कार: सर्वोत्तम व्यवहार? PHP संख्या प्रारूप कैसे विजेट के दाईं ओर नीचे त्रिभुज के बिना एंड्रॉइड स्पिनर बनाने के लिए अजाक्स से PHP स्क्रिप्ट के साथ सरणी भेजें एक WHERE ___ IN ___ कथन का उपयोग करना प्रिंट के लिए जावास्क्रिप्ट इवेंट हैंडलर कैसे प्रकार 1 9 .5 में एक enum प्रकार की प्रोग्राममैटिक गणना है?

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

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

आउटपुट: dsaqwe

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

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

Solutions Collecting From Web of "कैसे दो स्ट्रिंग 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. टोकन को अलग करने वाले व्हाइट-स्पेस वर्ण अब महत्वपूर्ण नहीं हैं।

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