Voglio confrontare 2 valori BOOL in obiettivo-c.In Objective-c, un modo sicuro e valido per confrontare 2 valori BOOL?
Ho scoperto che (3) - (6) del codice seguente funziona.
(1) - (2) non funziona perché BOOL è solo signed char
.
(3) funziona ed è molto leggibile ma penso che bool
non sia obiettivo-c.
L'utilizzo di bool
nel codice obiettivo-c è buono?
Qual è il modo sicuro e valido per confrontare 2 valori BOOL in obiettivo-c?
Ci sono altri modi migliori per confrontare?
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));
risultati:
(1) 0
(2) 0
(3) 1
(4) 1
(5) 1
(6) 1
'2' non è un' valore BOOL' valido; solo "SÌ" e "NO". Quello che stai facendo non è valido. – trojanfoe
Il 4o metodo mi sembra buono. È breve e converte in modo sicuro il valore su 0 o su 1. – nhahtdh
@trojanfoe: Il fatto è che Obj-C accetterà volentieri l'assegnazione del numero a BOOL, e con esso si può persino eseguire un'operazione bit a bit. – nhahtdh