2011-01-08 13 views
19

यह प्रश्न विशेष रूप से शैल स्क्रिप्ट से संबंधित है, लेकिन किसी भी प्रोग्रामिंग भाषा के बारे में हो सकता है।क्या बयानों और यदि बयानों में एकाधिक का उपयोग करने के बीच कोई अंतर है?

क्या एकाधिक if कथनों का उपयोग करने और शैल स्क्रिप्ट में elif कथन का उपयोग करने के बीच कोई अंतर है? और, case कथन मेरी स्थिति में काम नहीं करेगा।

+1

यह स्वाभाविक रूप से लेआउट और इंटरैक्शन पर निर्भर करता है। –

उत्तर

40

हां, संभावित रूप से। पर विचार करें इस (सी #, जावा, जो कुछ भी):

int x = GetValueFromSomewhere(); 

if (x == 0) 
{ 
    // Something 
    x = 1; 
} 
else if (x == 1) 
{ 
    // Something else... 
} 

इस बनाम:

int x = GetValueFromSomewhere(); 

if (x == 0) 
{ 
    // Something 
    x = 1; 
} 
if (x == 1) 
{ 
    // Something else... 
} 

पहले मामले में, केवल एक "कुछ" या की "कुछ और ..." हो जाएगा । दूसरे मामले में, पहले ब्लॉक के दुष्प्रभाव दूसरे ब्लॉक में स्थिति को सच बनाते हैं।

फिर एक और उदाहरण के लिए, की स्थिति नहीं पारस्परिक रूप से शुरू करने के लिए विशेष हो सकता है:

int x = ...; 

if (x < 10) 
{ 
    ... 
} 
else if (x < 100) 
{ 
    ... 
} 
else if (x < 1000) 
{ 
    ... 
} 

आप "और" यहाँ है, तो के रूप में जल्द ही एक शर्त के रूप में मेल खाता है बाकी होगा छुटकारा तो भी।

+1

महान उत्तर, समय सीमा समाप्त होने के बाद मैं इसे स्वीकार करूंगा। धन्यवाद! –

+0

यह बहुत अच्छा है! एक बहुत अच्छी व्याख्या। –

7

इसे effeciency और आपकी आवश्यकताओं के साथ करना है। यदि बयान एक दूसरे के स्वतंत्र हैं। प्रत्येक भाग जाएगा। अन्यथा यदि कथन केवल तभी निष्पादित होता है जब पिछले विफल हो।

6
if (x == 0) { 
    // 1 
} 


if (x >= 0) { 
    // 2 
} 

if (x <= 0) { 
    // 3 
} 

ऊपर कोड x=0 के लिए नीचे दिए गए कोड से अलग मूल्य का उत्पादन करेगा।

if (x == 0) { 
    // 1 
} else if (x >= 0) { 
    // 2 
} else { 
    // 3 
} 

पहले मामले में सभी बयानों 1, 2, और 3x = 0 के लिए क्रियान्वित की जाएगी। दूसरे मामले में केवल 1 बयान होंगे।

+0

-1 क्योंकि मैं 'else if',' else' के बारे में नहीं पूछ रहा था। –

+8

@ मार्क: 'अन्य अगर' निर्माण वास्तव में 'if'' है, उसके बाद 'if':' if (a) {} else अगर (बी) {} 'ठीक से संकलित होगा' if (a) { } else {if (b) {}} 'क्योंकि पूर्व में वास्तव में भाषा व्याकरण के अनुसार उत्तरार्द्ध के रूप में पार्स किया गया है। (बैश में 'elif' अनिवार्य रूप से सिंटैक्टिक चीनी है जो आपको कई ब्लॉक खोलने से रोकने के लिए है।) – cdhowie

+0

@ mark-szymanski उत्तर सही किया गया। यदि आप चाहें तो वोट हटाएं। – fastcodejava

3

जब आपके पास बयानों में एकाधिक होते हैं, तो प्रत्येक का मूल्यांकन अलग से किया जाता है, और यदि शर्तें सही हैं, तो उन सभी में कोड निष्पादित किया जा सकता है। यदि आपके पास/elif कथन है, तो दूसरी शर्त का मूल्यांकन केवल पहली शर्त के मूल्यांकन के विशेष परिणाम के बाद किया जाएगा।

If (cond A) { action 1} 
If (cond B) { action 2} 

दोनों cond एक और cond बी सही हैं, तो दोनों कार्यों को निष्पादित करेंगे:

इस स्यूडोकोड पर विचार करें।

दूसरी ओर, इस स्यूडोकोड:

If (cond A) {action 1} 
Elif (cond B) {action 2} 

केवल twomactions में से एक (या कोई भी नहीं) निष्पादित किया जाएगा, कोई फर्क नहीं पड़ता दोनों स्थितियों का मूल्यांकन कैसे।

संबंधित मुद्दे