खोज…
परिचय
परंपरागत रूप से, एक शाब्दिक एक अभिव्यक्ति है जो एक निरंतरता को दर्शाता है जिसका प्रकार और मूल्य इसकी वर्तनी से स्पष्ट है। उदाहरण के लिए, 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
अशक्त सूचक को निरूपित करने वाला कीवर्ड । यह किसी भी पॉइंटर या पॉइंटर-टू-मेंबर प्रकार में परिवर्तित किया जा सकता है, परिणामी प्रकार के अशक्त पॉइंटर को पैदावार देता है।
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
योग्यता प्राप्त करता है जो इसमें दिखाई देता है।
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 है।