मैंने कक्षा में एक बूलियन चर bool abc;
घोषित किया था और सोचा था कि यह डिफ़ॉल्ट रूप से गलत होगा। अगर मेरे प्रोग्राम if (abc)
में एक शर्त सही साबित हुई, तो मैंने एबीसी के मूल्य को आउटपुट किया, और देखा कि इसमें मूल्य 55 है। क्या यह सामान्य है? क्या हमें यह सुनिश्चित करने के लिए हमेशा 'बूल एबीसी = झूठा' असाइन करना होगा कि यह झूठा है?बुलीयन चर डिफ़ॉल्ट रूप से हमेशा गलत नहीं होते हैं?
उत्तर
हां, आपको हमेशा अपने चर शुरू करना चाहिए। जब तक आप गहराई से समय नहीं सीखते हैं और स्पष्ट रूप से ऐसा करने के लिए आवश्यक नहीं है, आपको यह हर समय करना चाहिए, इससे कोई फर्क नहीं पड़ता। और तब तक ... अच्छा ... एक अच्छी आदत क्यों रोकें?
गलत पर एक bool प्रारंभ करने के लिए यह डिफ़ॉल्ट करने के लिए पर्याप्त है, यह निर्माण:
struct X
{
bool b;
X() : b() {}
};
पर मूल्यांकन कर रहा है, मैं स्पष्ट बुलियन शाब्दिक झूठा जोड़ना चाहता हूं (मेरे लिए जो इसे और अधिक पठनीय बनाता है (हालांकि तकनीकी रूप से आपके से अलग नहीं है)। –
के बारे में आदिम निर्मित डेटा प्रकार (bool, चार, wchar_t, लघु, पूर्णांक, लंबे, नाव में बात करते हुए डबल , लंबे समय तक डबल), सी ++ मानक के अनुसार, केवल वैश्विक चर को शून्य का डिफ़ॉल्ट मान मिलता है यदि उन्हें स्पष्ट रूप से प्रारंभ नहीं किया गया है।
स्थानीय चर के लिए शिकायतकर्ता के लिए आवश्यक स्मृति की सामग्री को साफ करने की आवश्यकता नहीं है। एक स्थानीय चर - अगर स्पष्ट रूप से प्रारंभ नहीं किया गया है - इसमें मनमाना मूल्य होगा।
तकनीकी रूप से यह 'स्थिर भंडारण अवधि' ग्लोबल्स के चर हैं इस प्रकार के चर के सदस्य हैं। –
हां। आपको या तो bool x=false
या bool x(false)
करना होगा। जिन प्राइमेटिव्स को प्रारंभ नहीं किया गया है उनमें कोई भी मूल्य हो सकता है।
या 'बूल एक्स = बूल();' साथ ही साथ काम करेगा। –
देख हां। ALWAYS उपयोग से पहले अपने चर शुरू करें। भले ही भाषा गारंटी देता है कि उनके पास विशिष्ट मूल्य होंगे। यदि आप स्वयं को मजबूर नहीं कर सकते हैं, तो एक कंपाइलर प्राप्त करें जो शिकायत करेगा, और फिर स्वयं को ऐसा कर देगा। :)
हालांकि, मानों को प्रारंभ न करें जब तक कि उनके पास वास्तव में प्रारंभ होने का अर्थ न हो। उदाहरण के लिए, अगर आप इस तरह एक पाश है (मैं यह नहीं कह रहा हूँ यह अच्छा कोड है, यह सिर्फ एक उदाहरण है): जैसे मैंने किया था
int i = 0;
while ((i = getNum()) == 5)
{
}
शून्य करने के लिए i
प्रारंभ न करें। यह कोई समझ नहीं आता है, और जब यह कंपाइलर को बंद कर देता है, तो यह संभावना है कि आप इसे भूल जाएंगे और फिर आपका कोड गड़बड़ हो जाएगा। यदि आप केवल सही समय पर ही आरंभ करने के लिए मजबूर कर सकते हैं - और नहीं, कम नहीं - तो आप wrong code will look wrong even at just a glance के बाद से बहुत आसान की एक बिल्ली को डिबग कर देंगे।
तो, एक पंक्ति में: संकलक से शिकायत करने से रोकने के लिए कभी प्रारंभ नहीं करें, लेकिन हमेशा उपयोग से पहले प्रारंभ करें।
केवल वैश्विक चर को डिफ़ॉल्ट रूप से 0 (झूठा) असाइन किया जाता है, किसी भी स्थानीय चर को गैर-शून्य कचरा मान दिया जाता है, जो एक बूलियन चर में सत्य का मूल्यांकन करेगा।
- 1. चेकस्टाइल में डिफ़ॉल्ट रूप से संरक्षित चर क्यों नहीं हैं?
- 2. डिफ़ॉल्ट रूप से जावा अस्थिरता में चर क्यों नहीं हैं?
- 3. ऑटोडिटेक्टChangesEnabled डिफ़ॉल्ट रूप से गलत पर सेट क्यों नहीं है?
- 4. पर्यावरण चर क्यों डिफ़ॉल्ट रूप से मेकफ़ाइल में सेट चर को ओवरराइड नहीं करते हैं?
- 5. क्या .NET फ़ाइनलाइज़र हमेशा निष्पादित होते हैं?
- 6. क्या ऑब्जेक्टिव-सी में डिफ़ॉल्ट रूप से इंस्टेंस चर डिफ़ॉल्ट रूप से सेट हैं?
- 7. क्या रैवल हमेशा स्थिर होते हैं?
- 8. क्या डेटाग्राम हमेशा पूरी तरह से प्राप्त होते हैं?
- 9. डिफ़ॉल्ट रूप से गलत सेट करें यदि कोई अन्य पारस्परिक रूप से अनन्य तर्क सत्य है
- 10. स्ट्रिंग को सही/गलत करने के लिए बुलीयन मान
- 11. रैवल्यू संदर्भ: क्यों राजस्व स्पष्ट रूप से स्थानांतरित नहीं होते हैं?
- 12. जावा कन्स्ट्रक्टर डिफ़ॉल्ट रूप से सार्वजनिक नहीं हैं?
- 13. ओकैम/एफ # में फ़ंक्शन डिफ़ॉल्ट रूप से क्यों नहीं हैं?
- 14. एंड्रॉयड BluetoothSocket.isConnected हमेशा गलत
- 15. FileUpload.HasFile हमेशा गलत देना
- 16. BackgroundWorker RunWorkerCompletedEventArgs.Cancelled हमेशा गलत
- 17. FileUpload.hasFile हमेशा गलत है
- 18. उद्देश्य-सी में डिफ़ॉल्ट रूप से प्रारंभिक आवृत्ति चर प्रारंभिक हैं?
- 19. MySQL - रूसी वर्ण अनौपचारिक रूप से प्रदर्शित होते हैं
- 20. पूर्णांक प्रकार कैसे पूर्ण रूप से परिवर्तित होते हैं?
- 21. क्या ईवेंट हैंडलर असीमित रूप से संसाधित होते हैं?
- 22. एसोसिएटिव सरणी डिफ़ॉल्ट रूप से स्थानीय हैं
- 23. परिवर्तनीय नाम _ माध्य से शुरू होते हैं?
- 24. मिनीकेरेन नाम हमेशा 'ओ` के साथ क्यों समाप्त होते हैं?
- 25. डिफ़ॉल्ट रूप से प्रीएट प्रमाणीकरण क्यों सक्षम नहीं है?
- 26. स्थानीय चर नाम फ़ंक्शन पैरामीटर नाम के समान होते हैं
- 27. PHP $ _POST चर कभी-कभी खाली होते हैं
- 28. ओपनएमपी: स्थानीय चर स्वचालित रूप से निजी हैं?
- 29. ड्रॉइंग फ़ोल्डर में नाम क्यों नहीं रख सकते हैं विशेष वर्ण होते हैं या पूंजी पत्र से शुरू होते हैं?
- 30. Selenium2 फ़ायरफ़ॉक्स: डिफ़ॉल्ट रूप से डिफ़ॉल्ट प्रोफ़ाइल
क्यों: http://stackoverflow.com/questions/1910832/c-why-arent-pointers-initialized-with-null-by-default/1910992#1910992 –
[ध्यान दें कि एक अनियमित चर पढ़ने से यूबी की ओर जाता है ।] (http://stackoverflow.com/questions/4259885/why-do-i-see-strange-values-when-i-print-uninitialized-variables/4259991#4259991) बस इसे मत करें। – GManNickG
इस स्थिति में दिखाया जा सकता है कि एक 'रोचक' बग बी और बी दोनों सही –