User Tools

Site Tools


qna:misc:boolean-non-zero

Πως μπορώ να έχω πάντα ένα αληθές αποτέλεσμα ως 1 αντί για οποιαδήποτε άλλη μη-μηδενική τιμή

Κάθε μη-μηδενική τιμή, όταν αντιμετωπίζεται στα πλαίσια ενός λογικού (boolean) ελέγχου, αντιστοιχεί/ισοδυναμεί με αληθές (true).

Εάν όμως γράψουμε μια απλή αριθμητική σύγκριση με το true, τότε αυτή αποτυγχάνει αφού η σύγκριση γίνεται σε αριθμητικό επίπεδο, έτσι εάν το αληθές μη-μηδενικό αποτέλεσμα ήταν 4, τότε η σύγκριση:

nonZeroResult == true

ουσιαστικά ελέγχεται ως

4 == 1

και κατά συνέπεια αποτυγχάνει. Ενώ η σύγκριση με το false δίνει πάντα σωστό αποτέλεσμα γιατί μόνο το μηδέν παριστάνει το ψευδές.

Υπάρχουν οι εξείς τρόποι να μετατρέψετε με σιγουριά μία άγνωση τιμή (ας πούμε της μεταβλητής someValue) σε boolean.

  1. Με αποθήκευση σε μία μεταβλητή τύπου bool
    bool boolValue = someValue;
  2. Με type casting πάνω στην τιμή
    (bool)someValue
  3. Με χρήση του τελεστή not (!) δύο φορές οπότε η 1η μετατρέπει σε bool αλλά στην αντίθετη τιμή και η 2η επαναφέρει την αλήθεια της τιμής
    !!someValue

Από αυτές τις λύσεις η πιο κομψή είναι η 3η, αλλά επειδή χρησιμοποιείται σπάνια, μπορεί να μπερδεύει κάθε φορά που τη συναντάμε.

qna/misc/boolean-non-zero.txt · Last modified: 2021/04/24 10:04 by xallos