NSLog में बूलियन ध्वज कैसे प्रिंट करें?


जवाबों:


503

यहां बताया गया है कि मैं इसे कैसे करता हूं:

BOOL flag = YES;
NSLog(flag ? @"Yes" : @"No");

?: फॉर्म का टर्नीरी सशर्त संचालक है:

condition ? result_if_true : result_if_false

जहां उचित हो, उसी के अनुसार वास्तविक लॉग स्ट्रिंग्स को प्रतिस्थापित करें।


55
इसे भी स्थूल बनाना आसान है:#define StringFromBOOL(b) ((b) ? @"YES" : @"NO")
jscs

3
इसके पास इतने वोट कैसे हैं? यह बूलियन मान लॉग करने के लिए नहीं है, यह कैसे बूलियन मान के आधार पर विभिन्न मान लॉग करने के लिए है।
ऐस्सी

7
@ ऐसी: जाहिर है, लोगों (मूल पूछने वाले सहित) बाद में अधिक रुचि रखते थे। यदि मुझे किसी अनुमान पर खतरा था, तो यह है क्योंकि मूल्य को सीधे छापना (0/1) बहुत सार्थक नहीं है।
बोल्टकॉक

1
@BoltClock 0/1 लॉग आउटपुट में सार्थक नहीं है? मुझे लगा कि हम सभी प्रोग्रामर यहाँ हैं
21

298

%d, 0 FALSE है, 1 TRUE है।

BOOL b; 
NSLog(@"Bool value: %d",b);

या

NSLog(@"bool %s", b ? "true" : "false");

डेटा प्रकार के ठिकानों पर %@निम्नानुसार परिवर्तन होता है

For Strings you use %@
For int  you use %i
For float and double you use %f

16

बूलियन केवल पूर्णांक के अलावा और कुछ नहीं हैं, वे केवल टाइप किए गए मान हैं जैसे ...

typedef signed char     BOOL; 

#define YES (BOOL)1
#define NO (BOOL)0

BOOL value = YES; 
NSLog(@"Bool value: %d",value);

यदि आउटपुट 1 है, तो हाँ अन्यथा नहीं


1
नहीं, बूल है signed char। यदि आपकी मान 0 या 1 के अलावा आपूर्ति की गई है, तो आपकी अभिव्यक्ति गलत तरीके से मूल्यांकन कर सकती है।
कोडा

नहीं, BOOL का प्रकार आपके कंपाइलर (32 बनाम 64 बिट) पर निर्भर करता है, और अक्सर बूल के समान प्रकार नहीं होता है। दूसरी ओर, बूल, बूल है, जो एक मानक प्रकार है, और हस्ताक्षरित चार के समान नहीं है।
gnasher729

14

ध्यान दें कि स्विफ्ट में, आप बस कर सकते हैं

let testBool: Bool = true
NSLog("testBool = %@", testBool.description)

यह लॉग होगा testBool = true


स्विफ्ट में आप बस उपयोग कर सकते हैं print()
दिमित्री

10

हालांकि यह देवांग के सवाल का सीधा जवाब नहीं है, लेकिन मेरा मानना ​​है कि नीचे दिए गए मैक्रो BOOL को लॉग इन करने के इच्छुक लोगों के लिए बहुत मददगार हो सकते हैं। यह बूल के मूल्य के साथ-साथ चर के नाम के साथ स्वचालित रूप से लेबलिंग करेगा।

#define LogBool(BOOLVARIABLE) NSLog(@"%s: %@",#BOOLVARIABLE, BOOLVARIABLE ? @"YES" : @"NO" )

BOOL success = NO;
LogBool(success); // Prints out 'success: NO' to the console

success = YES;
LogBool(success); // Prints out 'success: YES' to the console

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

8

Apple के FixIt ने% hhd की आपूर्ति की, जिसने मुझे मेरे BOOL का सही मूल्य दिया।


4

हम चार तरीकों से जाँच कर सकते हैं

पहला तरीका है

BOOL flagWayOne = TRUE; 
NSLog(@"The flagWayOne result is - %@",flagWayOne ? @"TRUE":@"FALSE");

दूसरा तरीका है

BOOL flagWayTwo = YES; 
NSLog(@"The flagWayTwo result is - %@",flagWayTwo ? @"YES":@"NO");

तीसरा तरीका है

BOOL flagWayThree = 1;
NSLog(@"The flagWayThree result is - %d",flagWayThree ? 1:0);

चौथा तरीका है

BOOL flagWayFour = FALSE; // You can set YES or NO here.Because TRUE = YES,FALSE = NO and also 1 is equal to YES,TRUE and 0 is equal to FALSE,NO whatever you want set here.
NSLog(@"The flagWayFour result is - %s",flagWayFour ? YES:NO);

2
NSArray *array1 = [NSArray arrayWithObjects:@"todd1", @"todd2", @"todd3", nil];
bool objectMembership = [array1 containsObject:@"todd1"];
NSLog(@"%d",objectMembership);  // prints 1 or 0

2

स्विफ्ट में, आप बस एक बूलियन मान प्रिंट कर सकते हैं और इसे trueया के रूप में प्रदर्शित किया जाएगा false

let flag = true
print(flag) //true

1

यहाँ आप इसे कैसे कर सकते हैं:

BOOL flag = NO;
NSLog(flag ? @"YES" : @"NO");

यह मूल रूप से चार साल पहले @BoltClock के उत्तर के भाग का दोहराव है।
jk7

0
//assuming b is BOOL. ternary operator helps us in any language.
NSLog(@"result is :%@",((b==YES)?@"YES":@"NO"));

(b == YES) सिर्फ b के समान है। जैसा कि सूचीबद्ध है, आप इसे कम करने के लिए कंपाइलर के ऑप्टिमाइज़र पर भरोसा कर रहे हैं (b! @ "YES": @ "NO")
आर्मंड
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.