Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

स्टेटिक कॉन्स्ट बनाम #define बनाम एनम?

"स्थिर स्थिरांक"

"स्टेटिक कॉन्स्ट" मूल रूप से स्टैटिक (एक स्टोरेज स्पेसिफायर) और कॉन्स्ट (एक टाइप क्वालिफायर) का एक संयोजन है।

स्थैतिक चर के जीवनकाल और दृश्यता/पहुंच को निर्धारित करता है। इसका मतलब है कि यदि एक चर को स्थिर चर के रूप में घोषित किया जाता है, तो यह पूरे समय स्मृति में रहेगा जब कार्यक्रम चल रहा है, जबकि सामान्य या ऑटो चर नष्ट हो जाते हैं जब फ़ंक्शन (जहां चर परिभाषित किया गया था) समाप्त हो गया है।

कास्ट एक प्रकार का क्वालीफायर है। टाइप सिस्टम के माध्यम से मूल्य के बारे में अतिरिक्त जानकारी व्यक्त करने के लिए एक प्रकार के क्वालीफायर का उपयोग किया जाता है। जब कॉन्स्ट टाइप क्वालिफायर का उपयोग करके एक वैरिएबल को इनिशियलाइज़ किया जाता है, तो यह इसके मूल्य में और बदलाव को स्वीकार नहीं करेगा।

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

उदाहरण

#include<iostream>
using namespace std;
int main(){
int input = 10;
static const int value = 5;
input += value;
cout << input;
return 0;
}

"#define"

प्रीप्रोसेसर कमांड को डायरेक्टिव्स कहा जाता है, और पाउंड या हैश सिंबल (#) से शुरू होता है। # से पहले कोई सफेद जगह दिखाई नहीं देनी चाहिए, और अंत में अर्धविराम की आवश्यकता नहीं है।

कई चीजें जो प्रीप्रोसेसिंग चरण के दौरान की जा सकती हैं, उनमें शामिल हैं

  • #include निर्देश

    . के ज़रिए अन्य फ़ाइलों को शामिल करना
  • #define निर्देश

    . के माध्यम से प्रतीकात्मक स्थिरांक और मैक्रोज़ की परिभाषा

कुछ प्रीप्रोसेसर निर्देशों के माध्यम से आप सशर्त रूप से कुछ प्रीप्रोसेसर निर्देशों को संकलित या निष्पादित भी कर सकते हैं।

नोट - किसी प्रोग्राम को संकलित करने से पहले C++ प्रोग्राम का प्रीप्रोसेसिंग चरण होता है। C++ प्रीप्रोसेसर एक प्रोग्राम है जिसे सोर्स कोड संकलित करने से पहले निष्पादित किया जाता है।

आप पहले से ही #include प्रीप्रोसेसर निर्देश के साथ काम करना सीख चुके हैं जो आपको अपने प्रोग्राम में वांछित शीर्षलेख फ़ाइलों को शामिल करने देता है। यह या हमारी चर्चा #define प्रीप्रोसेसर निर्देश को समर्पित है।

#define प्रीप्रोसेसर हमें प्रतीकात्मक नामों और स्थिरांक को परिभाषित करने की अनुमति देता है। उदाहरण के लिए,

#परिभाषित PI 3.14159

यह कथन प्रोग्राम में PI की प्रत्येक घटना को 3.14159 में बदल देगा।

C++ #उदाहरण परिभाषित करें

अब पूरे उदाहरण पर विचार करें जिसमें PI की प्रत्येक घटना को 3.14159 मान से बदल दिया जाएगा, जो #define निर्देश के साथ परिभाषित मान है।

Input: PI 3.14159
Output: Area of Circle 314.15

उदाहरण

#include<iostream>
using namespace std;
#define PI 3.14159
int main() {
   int r = 10;
   float cir;
   cir = PI * (r * r);
   cout<<"Area of Circle: "<<cir<<endl;
}

"एनम"

एनम एक उपयोगकर्ता परिभाषित डेटा प्रकार है जहां हम एक चर के लिए मूल्यों का एक सेट निर्दिष्ट करते हैं और चर केवल संभावित मूल्यों के एक छोटे से सेट में से एक ले सकता है। एन्यूमरेशन को परिभाषित करने के लिए हम एनम कीवर्ड का उपयोग करते हैं।

enum direction {East, West, North, South}dir;

यहां गणना नाम दिशा है जो केवल चार निर्दिष्ट मानों में से एक ले सकता है, घोषणा के अंत में डीआईआर एक एनम चर है।

इसे समझने के लिए एक सरल उदाहरण लेते हैं:

यहां मैंने मान वेस्ट को एनम वैरिएबल डीआईआर को सौंपा है और जब मैंने डीआईआर का मान प्रदर्शित किया है तो यह 1 दिखाता है। ऐसा इसलिए है क्योंकि डिफ़ॉल्ट रूप से मान 0 से शुरू होने वाले क्रम में हैं, जिसका अर्थ है कि पूर्व 0 है, पश्चिम 1 है, उत्तर 2 है और दक्षिण 3 है।

Input: direction {East, West, North, South} dir=West
Output: 1

उदाहरण

#include<iostream>
using namespace std;
enum direction {East, West, North, South} dir;
int main(){
   dir = West;
   cout<<dir;
   return 0;
}

Enum वेरिएबल घोषित करने का दूसरा तरीका

जैसा कि हमने उपरोक्त उदाहरण में देखा है कि मैंने एनम वेरिएबल डीआईआर को एनम डिक्लेरेशन के दौरान घोषित किया है, एनम वैरिएबल घोषित करने का एक और तरीका है।

उदाहरण

#include <iostream>
using namespace std;
enum direction {East, West, North, South};
int main() {
   direction dir;
   dir = South;
   cout<<dir;
   return 0;
}

आउटपुट

3

सी++ में एनम का उपयोग क्यों करें

अब जब हम समझ गए हैं कि एनम क्या है और प्रोग्राम में उनका उपयोग कैसे किया जाता है, तो आइए चर्चा करें कि हम उनका उपयोग क्यों करते हैं:

Enums का उपयोग केवल तभी किया जाता है जब हम चर के मूल्यों के संभावित सेटों में से एक की अपेक्षा करते हैं, उदाहरण के लिए, हमारे पास एक dir चर है जो दिशा रखता है। चूँकि हमारे पास चार दिशाएँ हैं, यह चर चार में से कोई एक मान ले सकता है, यदि हम इस चर के लिए एक और यादृच्छिक मान निर्दिष्ट करने का प्रयास करते हैं, तो यह एक संकलन त्रुटि देगा। यह संकलन-समय की जाँच को बढ़ाता है और अमान्य स्थिरांक में गुजरने से होने वाली त्रुटियों से बचता है।

एक अन्य महत्वपूर्ण स्थान जहां उनका अक्सर उपयोग किया जाता है, स्विच केस स्टेटमेंट होते हैं, जहां सभी मान जो केस ब्लॉक की अपेक्षा करते हैं उन्हें एक एनम में परिभाषित किया जा सकता है। इस तरह हम यह सुनिश्चित कर सकते हैं कि स्विच कोष्ठक में हम जो एनम वैरिएबल पास करते हैं, वह कोई यादृच्छिक मान नहीं ले रहा है जिसे इसे स्वीकार नहीं करना चाहिए।


  1. जावास्क्रिप्ट कॉन्स्ट

    जावास्क्रिप्ट कॉन्स्ट घोषणाएं वेरिएबल बनाती हैं जिन्हें किसी अन्य मान पर पुन:असाइन नहीं किया जा सकता है या बाद में पुन:घोषित नहीं किया जा सकता है। इसे ES2015 में पेश किया गया था। जावास्क्रिप्ट कॉन्स्टेबल डिक्लेरेशन के लिए कोड निम्नलिखित है - उदाहरण <!DOCTYPE html> <html> <head> &l

  1. एक आरक्षित शब्द के साथ परिभाषित चर को बदला जा सकता है - जावास्क्रिप्ट?

    आप किसी ऑब्जेक्ट के मान को तब नहीं बदल सकते जब उसे कॉन्स्टेबल कीवर्ड का उपयोग करके परिभाषित किया गया हो। बदलने के बाद यह वही रहेगा। मान लें कि निम्नलिखित हमारे वैरिएबल को कॉन्स्ट के साथ परिभाषित किया गया है - const details1 = {    firstName: 'David',    subjectDetails:

  1. स्विफ्ट में स्टैटिक वेरिएबल का उपयोग कहां और कैसे करें?

    इससे पहले कि हम देखें कि स्टैटिक वेरिएबल का उपयोग कहाँ और कैसे किया जाता है, आइए पहले यह समझें कि स्विफ्ट में स्टैटिक वेरिएबल क्या है? स्थिर चर स्टेटिक वेरिएबल्स वे वेरिएबल्स हैं जिनके मान किसी वर्ग के सभी इंस्टेंस या ऑब्जेक्ट के बीच साझा किए जाते हैं। जब हम किसी वेरिएबल को स्टैटिक के रूप में परिभा