मेरे पास एक सहकर्मी है जो रखता है कि TRUE को 0 के रूप में परिभाषित किया जाता था और अन्य सभी मान गलत थे। मैं कसम खाता हूं कि मैंने जिस भाषा के साथ काम किया है, यदि आप एक बुलियन के लिए भी मूल्य प्राप्त कर सकते हैं, तो FALSE का मान 0 है। क्या TRUE 0 होता था? यदि हां, तो हमने कब स्विच किया?क्या सच हमेशा शून्य-शून्य मान था?
उत्तर
0/गैर 0 बात अपने सहकर्मी के बारे में शायद जब लोगों को सफलता का संकेत दिया गया मान के रूप में संख्यात्मक मान का उपयोग करने के बात कर रहा है उलझन में है , सच नहीं (यानी बैश स्क्रिप्ट और सी/सी ++ की कुछ शैलियों में)।
0 = सफलता का प्रयोग विफलता के कारणों को निर्दिष्ट में एक बहुत अधिक से अधिक परिशुद्धता के लिए अनुमति देता है (उदाहरण के लिए = 1, फ़ाइल गुम 2 = अंग गायब, और इतने पर)।
एक पक्ष नोट के रूप में: रूबी में, केवल झूठी मान शून्य और झूठे हैं। 0 सत्य है, लेकिन अन्य संख्याओं के विपरीत नहीं। 0 सत्य है क्योंकि यह ऑब्जेक्ट 0 का एक उदाहरण है।
यदि कुछ और नहीं है, तो बैश शैल अभी भी सत्य के लिए 0 का उपयोग करते हैं, और 1 झूठी के लिए।
यह 0 का एक परिणाम कोड जो ज्यादातर मामलों में के बाद एक प्रक्रिया समाप्त हो गया है, 0 का एक परिणाम कोड का मतलब के संदर्भ में हो सकता है, "अरे, सब कुछ ठीक है, यहाँ काम कोई समस्या नहीं।"
औचित्य के साथ कि यह कहने के लिए और कुछ भी नहीं है कि यह काम करता है, जबकि यदि यह असफल रहा, तो बहुत सारे गैर-शून्य रिटर्न कोड हैं जो यह इंगित करने के लिए हैं कि यह किस प्रकार की विफलता थी। – slim
आह ... अच्छा पुराना COM – MagicKat
और इसलिए यूनिक्स कमांड 'सत्य' कुछ भी नहीं करता है, लेकिन 0. – Justsalt
किसी भी भाषा में मैंने कभी भी काम किया है (70 के दशक के उत्तरार्ध में बेसिक पर वापस जा रहा है), झूठा 0 माना गया है और सत्य शून्य नहीं है।
मैं निश्चित नहीं हूं, लेकिन मैं आपको यह बता सकता हूं: सत्य और गलत की अंतर्निहित प्रकृति पर निर्भर चालें त्रुटि के लिए प्रवण हैं क्योंकि इन मानों की परिभाषा भाषा के कार्यान्वयनकर्ता (या, बहुत कम, विनिर्देशक)।
का रिटर्न कोड जारी करता है, अच्छी तरह से ऐसी भाषा में जहां पर सच्चाई की ढीली परिभाषा है, यह कुछ है जिसे आप सीखते हैं न केवल प्यार करने के लिए आवंटित। लेकिन अधिकांश संकलित भाषाओं के प्रकार के सुरक्षा क्षेत्र में, सत्य और झूठी उनकी परिभाषाओं में सख्त हैं। – stephenbayer
हां, लेकिन यह एक संभावित समस्या बन गया है - यहां तक कि एक ही भाषा में - यदि आप कंपाइलर्स, प्लेटफ़ॉर्म, या यहां तक कि बस अपनी भाषा के नवीनतम संशोधन में अपडेट कर रहे हैं। यही कारण है कि जब तक आप अपने मंच के बारे में बहुत निश्चित नहीं हैं या आपको होने की आवश्यकता है, तब तक मैं एग्नोस्टिक को कार्यान्वित नहीं कर रहा हूं। –
मुझे TRUE
0
याद नहीं है। 0
कुछ ऐसा है जो सी प्रोग्रामर सफलता का संकेत देने के लिए वापस आ जाएगा। इसे TRUE
से भ्रमित किया जा सकता है।
यह हमेशा 1
नहीं है। यह -1
या सिर्फ शून्य नहीं हो सकता है।
बूलियन प्रकार के बिना निर्मित भाषाओं के लिए, एकमात्र ऐसा सम्मेलन जिसे मैंने देखा है, सत्य को 1 और FALSE के रूप में परिभाषित करना है। उदाहरण के लिए, सी में, if
कथन यदि धारावाहिक अभिव्यक्ति का मूल्यांकन करता है तो खंड को निष्पादित करेगा 0.
मैंने एक बार कोडिंग दिशानिर्देश दस्तावेज़ भी देखा जो विशेष रूप से सत्य और गलत को फिर से परिभाषित नहीं करने के लिए कहा गया था। :)
आप एक भाषा है कि बुलियन में बनाया गया है, सी ++ की तरह प्रयोग कर रहे हैं, फिर कीवर्ड true
और false
भाषा का हिस्सा हैं, और आप कैसे वे वास्तव में लागू किया जाता है पर भरोसा नहीं करना चाहिए।
मेरा मानना है कि कीवर्ड सही और गलत मानकों द्वारा निर्दिष्ट मान हैं, इसलिए आप उन पर भरोसा कर सकते हैं। –
वीबी के पुराने संस्करणों सहित कई भाषाएं, सच/गलत को -1/0 के रूप में परिभाषित करती हैं। ऐसा इसलिए है कि बिटवाई ऑपरेशंस और लॉजिकल ऑपरेशंस एक ही काम करते हैं। – user11318
आज भी, कुछ भाषाओं (रूबी, तुतलाना, ...) 0 में सच है क्योंकि शून्य के अलावा सब कुछ सच है। अधिकतर 1 सच है। यही कारण है कि एक आम पकड़ लिया है और इसलिए यह कभी कभी एक अच्छा अभ्यास माना जाता है 0 झूठी जा रहा है पर भरोसा नहीं है, लेकिन एक स्पष्ट परीक्षण करना। जावा आपको यह करने की आवश्यकता है।
इसint x;
....
x = 0;
if (x) // might be ambiguous
{
}
मेक के बजाय
स्पष्ट है
if (0 != x)
{
}
जावा में तकनीकी रूप से यदि बयान केवल बूलियन अभिव्यक्तियों के लिए मान्य हैं और पूर्णांक बूलियन नहीं डाले जाते हैं। जावा में, सत्य सत्य है और झूठा झूठा है और न ही कोई संख्या है। –
जावा बूलियन विसंगतियों के लिए सबसे अच्छा है –
मुझे याद है कि कुछ वीबी प्रोग्रामिंग एक एक्सेस फॉर्म में है जहां ट्रू -1 था।
मुझे लगता है कि कई बेसिक स्वाद शून्य के रूप में शून्य और कुछ भी शून्य के रूप में मूल्यांकन करते हैं, लेकिन निरंतर झूठी को 0 के रूप में परिभाषित करते हैं और निरंतर सत्य -1 (या बाइनरी में सभी 1) के रूप में परिभाषित करते हैं। –
अधिकांश मूलभूत स्वादों में कोई लॉजिकल ऑपरेटर नहीं होते हैं; सभी ऑपरेटर bitwise हैं। इसलिए (नहीं 0) -1 है और तुलना सही -1 और यदि गलत है तो मूल्यांकन करें। – Artelius
सी जैसी भाषाओं में कोई बुलियन मूल्य नहीं था इसलिए आपको अपना खुद का परिभाषित करना पड़ा। क्या वे एक गैर मानक बूल ओवरराइड पर काम कर सकते हैं?
सी मानक लाइब्रेरी में सिस्टम कॉल आमतौर पर त्रुटि पर +1 और सफलता पर 0 पर वापस आती है। इसके अलावा फॉट्रान की गणना की जाती है अगर कथन (और संभवतः अभी भी करता है) शून्य से बराबर या उससे अधिक की स्थिति के आधार पर तीन पंक्ति संख्याओं में से एक पर कूदता है।
उदाहरण के लिए: अगर (मैं-15) 10,20,10
मैं की हालत के लिए परीक्षण होगा 15 लाइन 20 सच (शून्य करने के लिए मूल्यांकन करता है) करता है, तो और लाइन 10 अन्यथा कूद ==।
सैम कार्यान्वयन विवरण के विशिष्ट ज्ञान पर भरोसा करने की समस्याओं के बारे में सही है।
मुझे याद है कि पीएल/1 में कोई बूलियन वर्ग नहीं था। आप थोड़ा सा बना सकते हैं और इसे बुलियन अभिव्यक्ति का परिणाम असाइन कर सकते हैं। फिर, इसका उपयोग करने के लिए, आपको याद रखना था कि 1 झूठा था और 0 सत्य था।
सी मानक लाइब्रेरी में कई फ़ंक्शन परिणामस्वरूप 'त्रुटि कोड' पूर्णांक लौटाते हैं। चूंकि नोईआर को 0 के रूप में परिभाषित किया गया है, इसलिए एक त्वरित जांच 'अगर यह 0 है, तो यह ठीक है'। एक ही परंपरा एक यूनिक्स प्रक्रिया 'परिणाम कोड' में ले जाया गया; वह एक पूर्णांक है जिसने किसी दिए गए प्रक्रिया को समाप्त करने के बारे में कुछ जानकारी दी है।
यूनिक्स शैल स्क्रिप्टिंग में, केवल निष्पादित कमांड का परिणाम कोड उपलब्ध है, और टिपिक रूप से संकेत दिया जाता है कि 'सफल' या नहीं, 0 अर्थ सफलता के साथ, और कुछ भी एक विशिष्ट गैर-सफलता की स्थिति है।
उस से, शैल स्क्रिप्ट में सभी टेस्ट-जैसी संरचनाएं सत्य का मतलब 'सफलता' (यानी, 0 का परिणाम कोड) का उपयोग करती हैं, और कुछ और गलत मतलब है।
एक पूरी तरह से अलग विमान पर, डिजिटल सर्किट स्वतंत्र रूप से 'नकारात्मक तर्क' का उपयोग करते हैं। यह है, भले ही 0 वोल्ट को 'बाइनरी 0' और कुछ सकारात्मक मूल्य (आमतौर पर + 5 वी या + 3.3 वी कहा जाता है, लेकिन आजकल + 1.8 वी का उपयोग करना दुर्लभ नहीं है) को 'बाइनरी 1' कहा जाता है, कुछ घटनाएं 'जोरदार' होती हैं किसी दिए गए पिन द्वारा 0 पर जाकर मुझे लगता है कि कुछ शोर प्रतिरोधी फायदे हैं, लेकिन मुझे कारणों के बारे में निश्चित नहीं है।
नोट, हालांकि इस बारे में कुछ भी 'प्राचीन' या कुछ 'स्विचिंग समय' नहीं है। इसके बारे में मुझे जो कुछ भी पता है वह पुराने सम्मेलनों पर आधारित है, लेकिन आज पूरी तरह से वर्तमान और प्रासंगिक हैं।
डीओएस और अनुप्रयोगों से बाहर निकलने वाले कोड आमतौर पर 0 का उपयोग सफलता और गैर-शून्य का मतलब किसी प्रकार की विफलता के लिए करते हैं!
डॉस त्रुटि कोड 0-255 हैं और जब 'त्रुटि-रेखा' वाक्यविन्यास का उपयोग करके परीक्षण किया गया है, तो ऊपर उल्लिखित या निर्दिष्ट मूल्य सहित कुछ भी मतलब है, इसलिए निम्नलिखित मिलान 2 और ऊपर के पहले गोटो में, दूसरे और 0 (सफलता) अंतिम एक के लिए!
IF errorlevel 2 goto CRS
IF errorlevel 1 goto DLR
IF errorlevel 0 goto STR
यह भ्रमित हो जब पार्टी के सही/गलत वापसी बयान दूसरी तरह के आसपास हैं आसान है:
$ false; echo $?
1
$ true; echo $?
0
अधिकांश भाग के लिए, झूठी 0 के रूप में परिभाषित किया गया है, और सच गैर-शून्य है। कुछ प्रोग्रामिंग भाषाएं 1 का उपयोग करती हैं, कुछ उपयोग -1, और कुछ गैर-शून्य मान का उपयोग करते हैं।
यूनिक्स शैल के लिए हालांकि, वे विपरीत सम्मेलन का उपयोग करते हैं।
यूनिक्स शैल में चलने वाले अधिकांश आदेश वास्तव में छोटे प्रोग्राम होते हैं। वे एक निकास कोड वापस भेजते हैं ताकि आप यह निर्धारित कर सकें कि आदेश सफल था (0 का मान), या यह विफलता के प्रकार के आधार पर किसी कारण (1 या अधिक) के लिए विफल रहा है या नहीं।
यह भीतर श/ksh/bash खोल दुभाषिए में प्रयोग किया जाता है/जबकि/आदेशों की स्थिति की जांच करने के लिए जब तक:
if command then # successful fi
आदेश सफल होता है (यानी, एक शून्य से बाहर निकलें कोड लौटाता है), कथन के भीतर कोड निष्पादित किया गया है। आमतौर पर, उपयोग किया जाने वाला आदेश [कमांड, जो परीक्षण कमांड के लिए उपनाम है।
जनरल नियम:
शेल (डॉस शामिल है) "0" के रूप में "नहीं त्रुटि" का उपयोग करें ... जरूरी सच नहीं।
प्रोग्रामिंग भाषाएं सत्य को इंगित करने के लिए गैर-शून्य का उपयोग करती हैं।
यह कहा गया है कि, यदि आप ऐसी भाषा में हैं जो आपकी गलत स्थिति को परिभाषित करने देता है, इसे परिभाषित करता है और हमेशा स्थिरांक का उपयोग करता है।
मजाकिया बात यह है कि यह उस भाषा पर निर्भर करता है जिसके साथ आप काम कर रहे हैं। Lua सही है == प्रदर्शन के लिए शून्य आंतरिक .. सी
सी भाषा में, सी ++ से पहले, बूलियन जैसी कोई चीज़ नहीं थी। स्याही परीक्षण परीक्षण द्वारा किया गया था। शून्य का मतलब झूठा था और कोई भी शून्य शून्य मतलब था। तो आप
if (2) {
alwaysDoThis();
} else {
neverDothis();
}
सौभाग्य से सी ++ ने एक समर्पित बूलियन प्रकार की अनुमति दी थी।
कोई भी यह बताना चाहता है कि इसे क्यों वोट दिया गया था? – DJClayworth
क्योंकि यह प्रश्न में दिया गया है। – Hogan
मैं के बारे में सुना है और पुराने compilers का इस्तेमाल किया है जहां सच> 0, और झूठे < = 0.
एक कारण आप अगर (सूचक) का उपयोग नहीं करना चाहते हैं या यदि (संख्या) शून्य के लिए जाँच करने के लिए है कि , वे अप्रत्याशित रूप से झूठी मूल्यांकन कर सकते हैं।
इसी तरह, मैंने उन प्रणालियों पर काम किया है जहां न्यूल शून्य नहीं था।
हाहा मजाकिया 0.1 –
मैंने बड़ी संख्या में पुराने सी कोड वाली कंपनी में काम किया। साझा हेडर से कुछ सही और गलत के लिए अपने स्वयं के मूल्यों में परिभाषित किया गया है, और कुछ वास्तव में 0 के रूप में सही और गलत के रूप में 1. यह करने के लिए "सच युद्ध" का नेतृत्व किया:
/* like my constants better */
#undef TRUE
#define TRUE 1
#undef FALSE
#define FALSE 0
वोट दें क्योंकि मुझे अतीत में काटा गया है;) – Alaric
एसक्यूएल सर्वर डेटाबेस इंजन की स्टोरेज को अनुकूलतम बिट कॉलम यदि तालिका में 8 या कम कॉलम हैं, तो कॉलम 1 बाइट के रूप में संग्रहीत किए जाते हैं। यदि 9 से 16 बिट कॉलम हैं, तो कॉलम 2 बाइट्स के रूप में संग्रहीत होते हैं, और इसी तरह। स्ट्रिंग मान सही और गलत बिट मूल्यों में बदला जा सकता: सही 1 में बदल जाती है और गलत बदल जाती है के लिए 0. बिट में कनवर्ट कर रहा करने के लिए 1.
हर भाषा किसी भी अशून्य मूल्य को बढ़ावा देता है 0 के रूप में सही या गलत हो सकता है तो संख्या उपयोग शब्दों का उपयोग करना बंद करें लॉल या टी और एफ 1 बाइट स्टोरेज
- 1. Booleans हमेशा सच लौट
- 2. परीक्षण = "" एक बूलियन पर हमेशा सच रिटर्न
- 3. एसक्यूएल जहां स्थिति हमेशा सच होती है
- 4. एंड्रॉइड wifimanager हमेशा सच देता है
- 5. क्यों .find() हमेशा सच हो जाता है?
- 6. अभिव्यक्ति हमेशा सी # में सच है
- 7. string.Empty.StartsWith (((char) 10781)। ToString()) हमेशा सच देता है?
- 8. यह हालत हमेशा क्यों सच है? (pktNum! = invPktNum)
- 9. update_attributes हमेशा सच देता है, भले ही nested_attributes
- 10. फोर्क = "सच" क्या करता है?
- 11. माईएसक्यूएल में दशमलव (3,2) मान हमेशा 9.99
- 12. Listpicker त्रुटि SelectedItem हमेशा वैध मान
- 13. Uri.TryCreate किसी भी स्ट्रिंग मान के लिए सच है?
- 14. विधि को कथन के बाद वापसी मान की आवश्यकता क्यों होती है जो हमेशा सच होती है?
- 15. पायथन शब्दकोश: कुंजी() और मान() हमेशा एक ही क्रम हैं?
- 16. डीबग = web.config = सच चीज़ में सच है?
- 17. सी # int हैं? और बूल? हमेशा होता है जब hasvalue = सच?
- 18. अंक = सच
- 19. क्यों यह सच है
- 20. Django ORM, CharField और खाली = सच
- 21. क्या आपको हमेशा "यह"
- 22. निम्नलिखित कोड "सत्य, सत्य, झूठा, सच" प्रिंट करता है। यह "सत्य, सच, सच, सच" नहीं होना चाहिए?
- 23. रजिस्ट्रीकी मान बदल दिया गया था जब अधिसूचना प्राप्त करें
- 24. i = रूबी में सच और गलत सच है?
- 25. क्यों नहीं यह सच है == यह सच है:
- 26. जावास्क्रिप्ट में हमेशा सत्य (शून्य> शून्य) क्यों सच होता है?
- 27. क्यों (0 == 'हैलो') PHP में सच है?
- 28. Do सम्मिलित रिकॉर्ड्स हमेशा समीपस्थ पहचान प्राप्त मान
- 29. JAXB आवश्यक सच =
- 30. अभिव्यक्ति <Func <T, bool>> इसके साथ। यह हमेशा सच है
मैं इससे पहले भी थोड़ा सा रहा हूं ... –