C (C) और C ++ में क्या (…) कहा जाता है?


30

इसका एक उपयोग C और C ++ में वैरिएडिक संस्थाओं ...को निरूपित करना है।

इसका नाम क्या है?

क्या इसे एक ऑपरेटर के रूप में वर्गीकृत किया जाता है या कुछ और जब उस तरीके से उपयोग किया जाता है?

के बारे में कोई अन्य विवरण ...?

संपादित करें: मुझे इसका उद्देश्य पता है ...। मैं इसके नाम और वर्गीकरण के बारे में पूछ रहा हूं, जो मुझे आशा है कि सी और सी ++ दोनों में समान है।



1
C वैरेडिक फ़ंक्शंस और C ++ वैरेडिक टेम्प्लेट तर्क बिल्कुल अलग हैं, क्या आप वह संदर्भ दे सकते हैं जिसमें आपने इसे पाया है? (PS, C / C ++ मौजूद नहीं है, कृपया एक चुनें)
JVApen

1
मैं सिर्फ इसका नाम और वर्गीकरण जानना चाहता हूं
कोडर

जवाबों:


43

यह पंचकों में से एक है ।

6.4.6  Punctuators
Syntax punctuator:
     one of  [    ]    (    )    {   }    .    ->
             ++   --   &    *    +   -    ~    !
             /    %    <<   >>   <   >    <=   >=    ==   !=   ^   |   &&   ||
             ?    :    ;    ...
             =    *=   /=   %=   +=  -=   <<=  >>=   &=   ^=   |=
             ,    #    ##
             <:   :>   <%   %>   %:   %:%:

फ़ंक्शन घोषणा में इसे दीर्घवृत्त कहा जाता है ।


एलिप्सिस का उपयोग कुछ संकलक Cभाषा एक्सटेंशन द्वारा भी किया जाता है । उदाहरण - gcc स्विच / केस रेंज एक्सटेंशन

const char *test(unsigned num)
{
    switch(num)
    {
        case 0 ... 9:
            return "the value is in the 0 to 9 range";
        case 10 ... 99:
            return "the value is in the 10 to 99 range";
        default:
            return "out of tested range";
    }
}

https://godbolt.org/z/YBLma-


1
हालाँकि, पैरामीटर पैक के बारे में उल्लिखित मेरे प्रश्न में से एक टिप्पणी के रूप में, आपने अपने उत्तर में इसका उल्लेख क्यों नहीं किया?
कोडर

3
C11 स्टैंडर्ड के लिए लिंक: port70.net/~nsz/c/c11/n1570.html#6.4.6
पीएमजी

5
@ArdentCoder: इसे अभी भी C ++ में एक दीर्घवृत्त कहा जाता है, यहां तक ​​कि पैरामीटर पैक के लिए भी।
निकोल बोलस

4
मैं जोड़ना होगा कि ...है नहीं एक ऑपरेटर, क्योंकि यह एक का हिस्सा नहीं कर सकते हैं अभिव्यक्ति ( 'अभिव्यक्ति' द्वारा परिभाषित के अर्थ में C11 §6.5 )। इसके साथ आम में अधिक है { }और ;अन्य punctuators साथ की तुलना में।
zwol

1
@zwol C ++ में टोकन ...एक अभिव्यक्ति का हिस्सा हो सकता है। लेकिन इसे औपचारिक सिंटैक्स द्वारा ऑपरेटर नहीं माना जाता है ।
aschepler

8

...एक के रूप में जाना जाता है अंडाकार अंग्रेजी में और सी मानक में दोनों।


8

... के उपयोगों में से एक C और C ++ में वेरिएडिक संस्थाओं को निरूपित करना है

हाँ, आम आदमी की शर्तों में ...एक से अधिक या गुणकों को निरूपित करने के बारे में सोचा जा सकता है (जैसा कि छद्म-संहिता विराम चिह्नों में हम कभी-कभी एक मामले के विभिन्न प्रकारों से मिलते-जुलते कई बिंदुओं का उपयोग करते हैं), जिसके लिए यदि हम विचारधारा (कई अर्थों में एक से अधिक) मानते हैं C ++ में 'अलग-अलग' तर्कों / मापदंडों के अनुसार, यह फ़ंक्शन या टेम्प्लेट के लिए तर्कों की एक परिवर्तनीय संख्या को संदर्भित करेगा।

इसका नाम क्या है?

अंडाकार

क्या इसे एक ऑपरेटर के रूप में वर्गीकृत किया जाता है या कुछ और जब उस तरीके से उपयोग किया जाता है?

नहीं, यह निश्चित रूप से एक ऑपरेटर नहीं है क्योंकि यह आपको किसी भी तर्क को पारित करने की अनुमति देता है, उन पर काम नहीं करता है।

किसी भी अन्य विवरण के बारे में ...?

जहाँ तक मुझे पता है -

  1. इसका एक विशेष विनिर्देशक;
  2. दीर्घवृत्त हमेशा तर्क सूची में अंतिम रूप से आता है;
  3. जहाँ तक इसके उपयोग का संबंध है, इसका केवल तभी उपयोग किया जाता है जब आप किसी टेम्प्लेट / फंक्शन के लिए मापदंडों की संख्या पर सीमाएं हटाना चाहते हैं या जब आपको विस्तार के लिए एक्स्टेंसिबल संख्या की आवश्यकता होती है। (यानी यह एक वैरिएड क्लास टेम्पलेट या फंक्शन टेम्प्लेट में पैरामीटर पैक विस्तार प्रदान करता है) व्यवहार में हमें ज्यादातर ज्ञात मापदंडों के एक निश्चित सेट की आवश्यकता होती है, इसलिए यह ज्यादातर मामलों पर लागू नहीं होता है;
  4. इसे sizeofऑपरेटर के साथ इस्तेमाल किया जा सकता है , क्योंकि इसे एक पैक विस्तार के रूप में भी वर्गीकृत किया गया है।

संपादित करें: मुझे पता है कि ...मैं इसका नाम और वर्गीकरण के बारे में पूछ रहा हूं, जो मुझे आशा है कि सी और सी ++ दोनों में समान है।

नाम समान है, लेकिन उपयोग C ++ और C के लिए अलग-अलग हो सकता है।

केवल पूर्व भाषा में इसके उपयोग से परिचित हैं। (मुझे याद है कि वेरिएडिक्स पर हैकररैंक की समस्या है , इसकी उपयोगिता को कवर करते हुए।)


3

तीन पूर्ण विराम के अनुक्रम को C और C ++ दोनों में ...एक दीर्घवृत्त कहा जाता है


C ++ में, दीर्घवृत्त विभिन्न प्रकार के पैक्स को आरंभ और विस्तारित करने में मदद करता है ।

  • parameter pack- जब प्रकार और पहचानकर्ता के बीच एक दीर्घवृत्त होता है
    Type ... identifier

  • pack expansion- एक पैटर्न और एक दीर्घवृत्त के होते हैं
    pattern...

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.