Κάθε μη-μηδενική τιμή, όταν αντιμετωπίζεται στα πλαίσια ενός λογικού (boolean) ελέγχου, αντιστοιχεί/ισοδυναμεί με αληθές (true
).
Εάν όμως γράψουμε μια απλή αριθμητική σύγκριση με το true, τότε αυτή αποτυγχάνει αφού η σύγκριση γίνεται σε αριθμητικό επίπεδο, έτσι εάν το αληθές μη-μηδενικό αποτέλεσμα ήταν 4, τότε η σύγκριση:
nonZeroResult == true
ουσιαστικά ελέγχεται ως
4 == 1
και κατά συνέπεια αποτυγχάνει. Ενώ η σύγκριση με το false
δίνει πάντα σωστό αποτέλεσμα γιατί μόνο το μηδέν παριστάνει το ψευδές.
Υπάρχουν οι εξείς τρόποι να μετατρέψετε με σιγουριά μία άγνωση τιμή (ας πούμε της μεταβλητής someValue
) σε boolean.
bool
bool boolValue = someValue;
(bool)someValue
!
) δύο φορές οπότε η 1η μετατρέπει σε bool
αλλά στην αντίθετη τιμή και η 2η επαναφέρει την αλήθεια της τιμής !!someValue
Από αυτές τις λύσεις η πιο κομψή είναι η 3η, αλλά επειδή χρησιμοποιείται σπάνια, μπορεί να μπερδεύει κάθε φορά που τη συναντάμε.