Επεξηγηματικός χειριστής Ternary στο C

Οι προγραμματιστές χρησιμοποιούν τον τριμερή τελεστή για τη λήψη αποφάσεων στη θέση των πιο μακρινών, αν και άλλων δηλώσεων υπό όρους.

Ο τριαδικός χειριστής λαμβάνει τρία επιχειρήματα:

  1. Το πρώτο είναι ένα επιχείρημα σύγκρισης
  2. Το δεύτερο είναι το αποτέλεσμα μιας πραγματικής σύγκρισης
  3. Το τρίτο είναι το αποτέλεσμα μιας ψευδούς σύγκρισης

Βοηθά να σκεφτείτε τον τριμερή τελεστή ως στενό τρόπο ή να γράψετε μια δήλωση if-else. Ακολουθεί ένα απλό παράδειγμα λήψης αποφάσεων χρησιμοποιώντας εάν και αλλιώς :

int a = 10, b = 20, c; if (a < b) { c = a; } else { c = b; } printf("%d", c);

Αυτό το παράδειγμα έχει περισσότερες από 10 γραμμές, αλλά αυτό δεν είναι απαραίτητο. Μπορείτε να γράψετε το παραπάνω πρόγραμμα σε μόλις 3 γραμμές κώδικα χρησιμοποιώντας έναν τριμερή χειριστή.

Σύνταξη

condition ? value_if_true : value_if_false

Η δήλωση αξιολογεί value_if_trueεάν conditionπληρούται και value_if_falseαλλιώς.

Εδώ είναι το παραπάνω παράδειγμα που ξαναγράφηκε για χρήση του τριμερούς τελεστή:

int a = 10, b = 20, c; c = (a < b) ? a : b; printf("%d", c);

Η έξοδος του παραπάνω παραδείγματος πρέπει να είναι:

10

cορίζεται ίσο με a, επειδή η κατάσταση a < bήταν αληθινή.

Να θυμάστε ότι τα επιχειρήματα value_if_trueκαι value_if_falseπρέπει να είναι του ίδιου τύπου και πρέπει να είναι απλές εκφράσεις και όχι πλήρεις δηλώσεις.

Οι χειριστές Ternary μπορούν να ενωθούν όπως οι δηλώσεις if-else. Εξετάστε τον ακόλουθο κώδικα:

int a = 1, b = 2, ans; if (a == 1) { if (b == 2) { ans = 3; } else { ans = 5; } } else { ans = 0; } printf ("%d\n", ans);

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

int a = 1, b = 2, ans; ans = (a == 1 ? (b == 2 ? 3 : 5) : 0); printf ("%d\n", ans);

Η έξοδος και των δύο συνόλων κώδικα παραπάνω πρέπει να είναι:

3