मुझे "सेट" / "स्पष्ट" पसंद है, लेकिन अपने वाक्यांशों में अस्पष्टता से सावधान रहें। जैसा कि फ़िलिप बताते हैं , "सेट द बूल वेरिएबल" का अर्थ वैरिएबल के लिए कुछ मान लिखने के लिए लिया जा सकता है। लेकिन "झंडा स्थापित करना" अधिक स्पष्ट है।
संबंधित शब्दावली: 0 / गैर-शून्य पूर्णांक को 0/1 मान में बदलना "बूलियनाइजिंग" कहलाता है ।
यदि आप वास्तव में एक पूर्णांक के रूप में 0/1 मान का उपयोग करते हैं (एक सही / गलत के रूप में bool
), तो आप उस शब्द का उपयोग करना चाह सकते हैं। अन्यथा यह केवल तभी सामने आएगा जब आप संचालकों के प्रदर्शन की लागत के बारे में बात कर रहे हों। (या यदि आप मैन्युअल रूप से एक SIMD के साथ वेक्टरिंग कर रहे हैं, तो प्रत्येक वेक्टर तत्व में सभी-शून्य / ऑल-वन बिट्स का उत्पादन करने की तुलना करें)।
C और C ++ में, कोई bool
भी स्पष्ट रूप से एक पूर्णांक में 0 या 1 के रूप में बदल सकता है, और सामान्य कार्यान्वयन पर bool
एक-बाइट मान के रूप में संग्रहीत किया जाता है जो कि 0 या 1 है (न कि किसी भी गैर-शून्य मान)। कुशल अनुमति देता है a && b
, लेकिन व्यवहार में कई सी संकलकों ने अनुकूलन खो दिया है ।
bool booleanize(int a) { return a; } // C++
यह फ़ंक्शन ret
अधिकांश आर्किटेक्चर पर कई निर्देशों (शामिल नहीं ) के लिए संकलित करता है । (एमआइपी एक दिलचस्प अपवाद होने के नाते, एक अलग ध्वज / शर्त-कोड रजिस्टर के बजाय तुलना-में-रजिस्टर निर्देशों का होना)। x86-64, MIPS और ARM थंब के लिए गॉडबॉल्ट कंपाइलर एक्सप्लोरर पर, हम x86-6 संस्करण देख सकते हैं:
test edi, edi # set flags according to a & a
setne al
ret # return value in AL, the low byte of RAX
क्षमा करें कि किस बूलियनिंग को थोड़ा बड़ा / ऑफ-टॉपिक मिला है!