हालांकि पहले से ही अच्छे उत्तर हैं, मैंने सोचा कि यह दृष्टिकोण किसी ऐसे व्यक्ति के लिए और भी सहज हो सकता है जो बूलियन बीजगणित के लिए नया है, फिर एक सत्य तालिका का मूल्यांकन करने के लिए।
पहली चीज़ जो आप करना चाहते हैं, वह है, सी। को निष्पादित करने के लिए किन शर्तों के तहत आप यह चाहते हैं (a & b)
। इसके अलावा जब !a
। तो आपके पास है (a & b) | !a
।
यदि आप कम से कम करना चाहते हैं तो आप जा सकते हैं। जैसे "सामान्य" अंकगणित में, आप बाहर गुणा कर सकते हैं।
(a & b) | !a = (a | !a) & (b | !a)
। ए | ए हमेशा सच होता है, इसलिए आप बस इसे पार कर सकते हैं, जो आपको न्यूनतम परिणाम के साथ छोड़ देता है b | !a
:। मामले में आदेश में फर्क पड़ता है, क्योंकि आप केवल b की जांच करना चाहते हैं! अगर यह सही है (उदाहरण के लिए कब! और एक nullpointer चेक है और b पॉइंटर पर एक ऑपरेशन है जैसे @LordFarquaad ने अपनी टिप्पणी में बताया है, तो आप कर सकते हैं दो स्विच करना चाहते हैं।
अन्य मामला (/ * ... * /) हमेशा निष्पादित किया जाएगा जब सी निष्पादित नहीं किया जाता है, इसलिए हम इसे दूसरे मामले में डाल सकते हैं।
यह भी ध्यान देने योग्य है कि यह संभवत: एक्शन सी को एक विधि में डालने का एक तरीका है।
जो हमें निम्नलिखित कोड के साथ छोड़ देता है:
if (!A || B)
{
doActionC() // execute method which does action C
}
else
{
/* ... */ // what ever happens here, you might want to put it into a method, too.
}
इस तरह आप अधिक ऑपरेंड वाले शब्दों को भी कम कर सकते हैं, जो जल्दी से सत्य तालिकाओं के साथ बदसूरत हो जाता है। एक और अच्छा तरीका है कर्णघट मानचित्र। लेकिन मैं अब इसमें गहराई तक नहीं जाऊंगा।