Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> सी प्रोग्रामिंग

C/C++ प्रोग्राम में अनारंभित प्रिमिटिव डेटा प्रकार

जब हम C या C++ में एक वेरिएबल घोषित करते हैं लेकिन उसे आरंभ नहीं करते, तो उसमें **अनिश्चित मान** (इनडिटरमिनेट वैल्यू) होता है - जिसे अक्सर "कचरा मान" कहा जाता है।

महत्वपूर्ण नियम

  • स्थानीय/ऑटोमैटिक वेरिएबल्स: अनारंभित = अनिश्चित मान (कचरा)
  • स्थैतिक/वैश्विक वेरिएबल्स: स्वचालित रूप से शून्य-आरंभित
  • डायनामिक आवंटन (malloc): अनारंभित (कचरा)
  • calloc / new(): शून्य-आरंभित

C++ उदाहरण

#include <iostream>
using namespace std;

int main() {
    char char_var;
    float float_var;
    int int_var;
    double double_var;
    long long_var;
    
    cout << "char: " << (int)char_var << endl;
    cout << "float: " << float_var << endl;
    cout << "int: " << int_var << endl;
    cout << "double: " << double_var << endl;
    cout << "long: " << long_var << endl;
    return 0;
}

विभिन्न कंपाइलर्स/पर्यावरण पर आउटपुट

Cpp.sh (ऑनलाइन)

0
0
0
0
0

Online GDB

5.88054e-39
0
6.95297e-310
0

स्थानीय सिस्टम (सामान्य)

9.73438e-039
4309744
1.15685e-306
-53505136

क्यों कंपाइलर डिफ़ॉल्ट मान से आरंभ नहीं करता?

उत्तर: स्टैक वेरिएबल को आरंभ करने का ओवरहेड निष्पादन गति को बाधित करता है। C/C++ "आप जो उपयोग नहीं करते उसके लिए भुगतान न करें" दर्शन का पालन करते हैं। इसलिए ये वेरिएबल्स अनिश्चित मान रख सकते हैं।

सर्वोत्तम अभ्यास

  1. हमेशा आरंभ करें: int x = 0;, float f = 0.0f;, char c = '\0';
  2. घोषणा के समय आरंभीकरण: int x{0}; (C++11 यूनिफॉर्म आरंभीकरण)
  3. कंपाइलर चेतावनियां सक्षम करें: -Wall -Wextra -Wuninitialized (GCC/Clang)
  4. स्टैटिक एनालिसिस टूल्स उपयोग करें (Cppcheck, Clang Static Analyzer)

आरंभीकरण के प्रकार

प्रकारसिंटैक्सनोट्स
डिफ़ॉल्टint x;स्थानीय: अनिश्चित; स्थैतिक: 0
मान आरंभीकरणint x = 0;क्लासिक C शैली
यूनिफॉर्म (C++11)int x{0};नैरोइंग रूपांतरण रोकता है
कॉन्स्ट्रक्टरstd::string s;डिफ़ॉल्ट कॉन्स्ट्रक्टर कॉल करता है
एग्रीगेटint arr[5] = {0};सभी तत्व 0

निष्कर्ष

कभी भी अनारंभित वेरिएबल्स के मान पर भरोसा न करें। यह अनिर्दिष्ट व्यवहार (Undefined Behavior) है और पोर्टेबल, विश्वसनीय कोड के लिए हमेशा स्पष्ट आरंभीकरण करें।

  1. nवीं कैटलन संख्या (nth Catalan Number) के लिए C/C++ प्रोग्राम? nवीं कैटलन संख्या (nth Catalan Number) के लिए C/C++ प्रोग्राम?

    कैटलन संख्याएं (Catalan numbers) संख्याओं का एक अनुक्रम है। कैटलन संख्याएं प्राकृतिक संख्याओं का एक अनुक्रम बनाती हैं जो विभिन्न गणना समस्याओं में होती हैं, अक्सर पुनरावर्ती रूप से परिभाषित वस्तुओं से जुड़ी होती हैं। Cₙ लंबाई 2n के डाइक शब्दों (Dyck words) की संख्या है। एक डाइक शब्द n Xs और n Ys

  1. C/C++ में तर्क बलात्कार (Argument Coercion) C/C++ में तर्क बलात्कार (Argument Coercion)

    यहां हम C या C++ में तर्क बलात्कार के बारे में देखेंगे। तर्क बलात्कार एक तकनीक है जिसके द्वारा कंपाइलर तर्कों को एक प्रकार से दूसरे प्रकार में अंतर्निहित रूप से परिवर्तित कर सकता है। यह तर्क प्रचार नियम का पालन करता है। यदि एक तर्क निम्न डेटाटाइप का है, तो उसे उच्च डेटाटाइप में परिवर्तित किया जा सक

  1. - C++ प्रोग्रामिंग में फंडामेंटल डेटा टाइप्स क्या हैं?

    एक फंडामेंटल या प्रिमिटिव प्रकार एक डेटा प्रकार है जहां यह जिन मानों को दर्शा सकता है उनकी प्रकृति बहुत सरल होती है (एक संख्या, एक कैरेक्टर या एक ट्रुथ-वैल्यू); प्रिमिटिव प्रकार किसी भी प्रोग्रामिंग भाषा के सबसे बुनियादी बिल्डिंग ब्लॉक्स होते हैं और अधिक जटिल डेटा प्रकारों का आधार होते हैं। C++ में