खोज…


परिचय

परंपरागत रूप से, एक शाब्दिक एक अभिव्यक्ति है जो एक निरंतरता को दर्शाता है जिसका प्रकार और मूल्य इसकी वर्तनी से स्पष्ट है। उदाहरण के लिए, 42 एक शाब्दिक है, जबकि x से नहीं है जब किसी को इसके प्रकार को जानने के लिए इसकी घोषणा को देखना होगा और इसके मूल्य को जानने के लिए कोड की पिछली पंक्तियों को पढ़ना होगा।

हालांकि, C ++ 11 ने उपयोगकर्ता-परिभाषित शाब्दिक भी जोड़े, जो पारंपरिक अर्थों में शाब्दिक नहीं हैं, लेकिन फ़ंक्शन कॉल के लिए शॉर्टहैंड के रूप में उपयोग किया जा सकता है।

सच

एक कीवर्ड प्रकार bool के दो संभावित मूल्यों में से एक को दर्शाता है।

bool ok = true;
if (!f()) {
    ok = false;
    goto end;
}

असत्य

एक कीवर्ड प्रकार bool के दो संभावित मूल्यों में से एक को दर्शाता है।

bool ok = true;
if (!f()) {
    ok = false;
    goto end;
}

nullptr

सी ++ 11

अशक्त सूचक को निरूपित करने वाला कीवर्ड । यह किसी भी पॉइंटर या पॉइंटर-टू-मेंबर प्रकार में परिवर्तित किया जा सकता है, परिणामी प्रकार के अशक्त पॉइंटर को पैदावार देता है।

Widget* p = new Widget();
delete p;
p = nullptr; // set the pointer to null after deletion

ध्यान दें कि nullptr खुद एक पॉइंटर नहीं है। nullptr का प्रकार एक मौलिक प्रकार है जिसे std::nullptr_t रूप में जाना जाता है।

void f(int* p);

template <class T>
void g(T* p);

void h(std::nullptr_t p);

int main() {
    f(nullptr); // ok
    g(nullptr); // error
    h(nullptr); // ok
}

इस

किसी वर्ग के सदस्य फ़ंक्शन के भीतर, कीवर्ड this उस कक्षा के उदाहरण के लिए एक संकेतक है जिस पर फ़ंक्शन को बुलाया गया था। this एक स्थिर सदस्य फ़ंक्शन में उपयोग नहीं किया जा सकता है।

struct S {
    int x;
    S& operator=(const S& other) {
        x = other.x;
        // return a reference to the object being assigned to
        return *this;
    }
};

के प्रकार के this सदस्य समारोह के सीवी-योग्यता पर निर्भर करता है: यदि X::f है const है, तो के प्रकार this भीतर f है const X* , इसलिए this एक के भीतर से गैर स्थिर डेटा सदस्यों को संशोधित करने के लिए इस्तेमाल नहीं किया जा सकता const सदस्य समारोह। इसी तरह, this उस फ़ंक्शन से volatile योग्यता प्राप्त करता है जो इसमें दिखाई देता है।

सी ++ 11

this उपयोग गैर-स्थैतिक डेटा सदस्य के लिए ब्रेस-या-इक्वलाइज़र में भी किया जा सकता है।

struct S;
struct T {
    T(const S* s);
    // ...
};
struct S {
    // ...
    T t{this};
};

this एक प्रतिद्वंद्विता है, इसलिए इसे नहीं सौंपा जा सकता है।

आन्तरिक शाब्दिक

पूर्णांक शाब्दिक रूप की एक प्राथमिक अभिव्यक्ति है

  • दशमलव-शाब्दिक

यह एक गैर-शून्य दशमलव अंक (1, 2, 3, 4, 5, 6, 7, 8, 9) है, इसके बाद शून्य या अधिक दशमलव अंक (0, 1, 2, 3, 4, 5, 6,) 7, 8, 9)

int d = 42;

  • अष्टाधारी-शाब्दिक

यह अंक शून्य (0) और उसके बाद शून्य या अधिक अष्टक अंक (0, 1, 2, 3, 4, 5, 6, 7) है।

int o = 052

  • हेक्स-शाब्दिक

यह वर्ण अनुक्रम 0x या वर्ण अनुक्रम 0X है जिसके बाद एक या अधिक हेक्साडेसिमल अंक (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, ए, ए, बी, बी, सी, सी) , डी, डी, ई, ई, एफ, एफ)

int x = 0x2a; int X = 0X2A;

  • बाइनरी-शाब्दिक (सी ++ 14 के बाद से)

यह वर्ण क्रम 0 बी या वर्ण क्रम 0 बी एक या एक से अधिक द्विआधारी अंक (0, 1) है।

int b = 0b101010; // C++14

पूर्णांक-प्रत्यय, यदि प्रदान किया गया हो, तो निम्नलिखित में से एक या दोनों हो सकते हैं (यदि दोनों प्रदान किए गए हैं, तो वे किसी भी क्रम में दिखाई दे सकते हैं:

  • अहस्ताक्षरित-प्रत्यय (चरित्र यू या चरित्र यू)

unsigned int u_1 = 42u;

  • दीर्घ-प्रत्यय (वर्ण l या वर्ण L) या दीर्घ-दीर्घ-प्रत्यय (वर्ण क्रम ll या वर्ण क्रम LL) (C ++ 11 से)

निम्नलिखित चर भी एक ही मूल्य के लिए आरंभिक हैं:

unsigned long long l1 = 18446744073709550592ull; // C++11
unsigned long long l2 = 18'446'744'073'709'550'592llu; // C++14
unsigned long long l3 = 1844'6744'0737'0955'0592uLL; // C++14
unsigned long long l4 = 184467'440737'0'95505'92LLU; // C++14

टिप्पणियाँ

पूर्णांक शाब्दिक में पत्र मामले-असंवेदनशील हैं: 0xDeAdBaBeU और 0XdeadBABEu एक ही संख्या का प्रतिनिधित्व करते हैं (एक अपवाद लंबे-लंबे प्रत्यय है, जो या तो एलएल या एलएल है, कभी एलएल या एलएल नहीं)

कोई नकारात्मक पूर्णांक शाब्दिक नहीं हैं। -1 जैसी अभिव्यक्तियाँ शाब्दिक रूप से दर्शाए गए मूल्य के लिए यूनरी माइनस ऑपरेटर को लागू करती हैं, जिसमें निहित प्रकार के रूपांतरण शामिल हो सकते हैं।

C99 से पहले (लेकिन C ++ में नहीं), अपरिभाषित दशमलव मान जो लंबे int में फिट नहीं होते हैं, उन्हें अहस्ताक्षरित लंबी int टाइप करने की अनुमति है।

जब #if या #elif की नियंत्रित अभिव्यक्ति में उपयोग किया जाता है, तो सभी हस्ताक्षरित पूर्णांक स्थिरांक कार्य करते हैं जैसे कि उनके पास std :: intmax_t है और सभी अहस्ताक्षरित पूर्णांक स्थिरांक ऐसे कार्य करते हैं मानो उनके पास std :: uintmax_t है।



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow