मुझे C या C ++ प्रोग्रामिंग में सिंगल कोट्स और डबल कोट्स का उपयोग कब करना चाहिए?
मुझे C या C ++ प्रोग्रामिंग में सिंगल कोट्स और डबल कोट्स का उपयोग कब करना चाहिए?
जवाबों:
C और C ++ में सिंगल कोट्स एकल वर्ण की पहचान करते हैं, जबकि दोहरे उद्धरण एक स्ट्रिंग शाब्दिक बनाते हैं। 'a'
एक एकल अक्षर शाब्दिक है, जबकि "a"
एक स्ट्रिंग शाब्दिक है जिसमें एक 'a'
और एक शून्य टर्मिनेटर है (जो कि 2 वर्ण सरणी है)।
C ++ में एक अक्षर शाब्दिक का प्रकार है char
, लेकिन ध्यान दें कि C में, एक वर्ण शाब्दिक का प्रकार है int
, जो कि sizeof 'a'
एक आर्किटेक्चर में 4 है जहां ints 32bit है (और CHAR_BIT 8 है), जबकि sizeof(char)
हर जगह 1 है।
कुछ संकलक एक विस्तार को भी लागू करते हैं, जो बहु-चरित्र स्थिरांक की अनुमति देता है। C99 मानक कहता है:
6.4.4.4p10: "एक पूर्णांक वर्ण का मान जिसमें एक से अधिक वर्ण हों (जैसे, 'अब'), या एक वर्ण या एस्केप अनुक्रम जिसमें एकल-बाइट निष्पादन चरित्र के लिए मैप नहीं है, कार्यान्वयन-परिभाषित है। "
यह इस तरह दिख सकता है, उदाहरण के लिए:
const uint32_t png_ihdr = 'IHDR';
परिणामस्वरूप स्थिर (जीसीसी में, जो इसे लागू करता है) प्रत्येक वर्ण को लेने और इसे ऊपर स्थानांतरित करने से आपको प्राप्त होने वाला मूल्य होता है, जिससे कि 'I' 32-बिट मान के सबसे महत्वपूर्ण बिट्स में समाप्त होता है। जाहिर है, आपको इस पर भरोसा नहीं करना चाहिए अगर आप प्लेटफ़ॉर्म स्वतंत्र कोड लिख रहे हैं।
एकल उद्धरण वर्ण हैं ( char
), दोहरे उद्धरण अशक्त-तार हैं ( char *
)।
char c = 'x';
char *s = "Hello World";
const char *
।
एकल उद्धरण एकल वर्ण के लिए हैं। दोहरे उद्धरण एक स्ट्रिंग (वर्णों की सरणी) के लिए हैं। आप एक बार में एक स्ट्रिंग एक वर्ण बनाने के लिए एकल उद्धरण का उपयोग कर सकते हैं, यदि आप चाहें।
char myChar = 'A';
char myString[] = "Hello Mum";
char myOtherString[] = { 'H','e','l','l','o','\0' };
मैं सामान की तरह इधर-उधर ताक रहा था: int cc = 'cc'; ऐसा होता है कि यह मूल रूप से एक पूर्णांक की बाइट-वार प्रति है। इसलिए इसे देखने का तरीका यह है कि 'cc' जो मूल रूप से 2 c का है, पूर्णांक cc के निचले 2 बाइट्स में कॉपी किया जाता है। यदि आप एक सामान्य ज्ञान की तलाश कर रहे हैं, तो
printf("%d %d", 'c', 'cc'); would give:
९९ २५४४३
ऐसा इसलिए है क्योंकि 25443 = 99 + 256 * 99
इसलिए 'cc' एक मल्टी-कैरेक्टर कंटीन्यू है न कि एक स्ट्रिंग।
चियर्स
डबल उद्धरण स्ट्रिंग शाब्दिक के लिए हैं, उदाहरण के लिए:
char str[] = "Hello world";
एकल उद्धरण एकल वर्ण शाब्दिक हैं, जैसे:
char c = 'x';
EDIT जैसा कि डेविड ने एक अन्य जवाब में कहा, एक चरित्र शाब्दिक का प्रकार है int
।
char str[] = {'H','e','l','l','o'};
, और एक शून्य टर्मिनेटर नहींstr
होगा ।
str
एक स्ट्रिंग नहीं है (कम से कम, सी-स्टाइल स्ट्रिंग नहीं है, जिसे एनटीबीएस के रूप में परिभाषित किया गया है)।
char[]
जो (जो लोग अक्सर "स्ट्रिंग्स" की बात करते हैं) शून्य-समाप्त हो जाता है।
"hello" /*seamlessly connected to*/ "world"
:। और यह टिप्पणी मल्टी-लाइन संदेशों के लिए समझ में आ सकता है।
C सिंगल कोट्स में 'a' कैरेक्टर कॉन्स्टेंट को इंगित करता है जबकि "a" अक्षर का एक सरणी है, जिसे हमेशा O अक्षर के साथ समाप्त किया जाता है
एकल उद्धरण का उपयोग वर्ण के लिए किया जाता है, जबकि स्ट्रिंग के लिए दोहरे उद्धरण का उपयोग किया जाता है।
printf("%c \n",'a');
printf("%s","Hello World");
एक हैलो वर्ल्ड
यदि आप इसके विपरीत मामले में इस्तेमाल करते हैं और चरित्र के लिए स्ट्रिंग और डबल उद्धरण के लिए एकल उद्धरण का उपयोग करते हैं। यहाँ, यह परिणाम होगा;
printf("%c \n","a");
printf("%s",'Hello World');
पहली पंक्ति के लिए। आपके पास कचरा मूल्य या अप्रत्याशित होगा। या आपके पास इस तरह का उत्पादन हो सकता है।
�
जबकि दूसरे कथन के लिए। आप कुछ नहीं देखेंगे। एक बात और। यदि आपके पास इसके बाद अधिक बयान है। वे आपको कोई परिणाम भी नहीं देंगे।
नोट: PHP भाषा आपको आसानी से एकल और दोहरे उद्धरण का उपयोग करने की सुविधा देती है।
सिंगल कोट्स एक चार को दर्शा रहे हैं, डबल एक स्ट्रिंग को दर्शाते हैं।
जावा में, यह भी वही है।
एकल चार के साथ एकल उद्धरण का उपयोग करें:
char ch = 'a';
यहाँ 'a'
एक चार स्थिरांक है और इसके बराबर हैASCII
चार a मान के है।
स्ट्रिंग के साथ दोहरे उद्धरण का उपयोग करें:
char str[] = "foo";
यहाँ "foo"
एक स्ट्रिंग शाब्दिक है।
इसका उपयोग करने के लिए ठीक है "a"
लेकिन उपयोग करने के लिए ठीक नहीं है 'foo'