मैं उद्देश्य-सी में 2 बूल मानों की तुलना करना चाहता हूं।उद्देश्य-सी में, 2 बूल मानों की तुलना करने के लिए सुरक्षित और अच्छा तरीका?
मुझे पता चला कि निम्नलिखित कोड के (3) - (6) काम करता है।
(1) - (2) काम नहीं करता है क्योंकि बूल सिर्फ signed char
है।
(3) काम करता है और बहुत पठनीय है लेकिन मुझे लगता है कि bool
उद्देश्य-सी नहीं है।
उद्देश्य-सी कोड में bool
का उपयोग करना अच्छा है?
उद्देश्य-सी में 2 बूल मूल्यों की तुलना करने का सुरक्षित और अच्छा तरीका कौन सा है?
तुलना करने के लिए अन्य बेहतर तरीके हैं?
BOOL b = YES;
BOOL c = 2;
NSLog(@"(1) %d", b == c); // not work
NSLog(@"(2) %d", (BOOL)b == (BOOL)c); // not work
NSLog(@"(3) %d", (bool)b == (bool)c);
NSLog(@"(4) %d", !b == !c);
NSLog(@"(5) %d", !!b == !!c);
NSLog(@"(6) %d", (b != 0) == (c != 0));
परिणाम:
(1) 0
(2) 0
(3) 1
(4) 1
(5) 1
(6) 1
'2' एक वैध' BOOL' मूल्य है नहीं; केवल 'हां' और 'नहीं' हैं। आप क्या कर रहे हैं अमान्य है। – trojanfoe
चौथी विधि मेरे लिए अच्छी लगती है। यह छोटा है, और यह सुरक्षित रूप से मूल्य को 0 या 1. – nhahtdh
@trojanfoe में परिवर्तित करता है: बात यह है कि, ओबज-सी खुशी से बूल की संख्या असाइनमेंट स्वीकार कर लेगा, और आप इसके साथ थोड़ा सा ऑपरेशन भी कर सकते हैं। – nhahtdh