Unary Operator σε C++

Unary Operator Se C



Στην C++, ένας μοναδικός τελεστής είναι ένας τελεστής που λειτουργεί μόνο σε έναν μόνο τελεστή. Οι Unary τελεστές διαδραματίζουν κρίσιμο ρόλο στη C++ επιτρέποντας τον χειρισμό της τιμής που σχετίζεται με μια μοναδική μεταβλητή ή έκφραση. Αυτοί οι ευέλικτοι τελεστές μπορούν να χρησιμοποιηθούν σε διάφορα περιβάλλοντα, όπως η αύξηση ή η μείωση μιας μεταβλητής, η αλλαγή του πρόσημου μιας αριθμητικής τιμής ή η εκτέλεση μιας λογικής άρνησης. Αυτό το άρθρο διερευνά τους μοναδικούς τελεστές στη C++ καλύπτοντας τους τύπους και τις εφαρμογές τους και παρέχοντας πολλά παραδείγματα για καλύτερη κατανόηση.

Η C++ υποστηρίζει αρκετούς μοναδικούς τελεστές, καθένας από τους οποίους εξυπηρετεί έναν μοναδικό σκοπό στον χειρισμό των μεταβλητών. Ας ξεκινήσουμε με τους τελεστές αύξησης και μείωσης που χρησιμοποιούνται συνήθως σε βρόχους και διάφορους αλγόριθμους.

Παράδειγμα 1: Τελεστές Αύξησης (++) και Μείωσης (–).

Οι μονατικοί τελεστές αύξησης (++) και μείωσης (–) είναι θεμελιώδη εργαλεία στη C++ για την τροποποίηση της τιμής μιας μεταβλητής είτε αυξάνοντας είτε μειώνοντάς την κατά 1, αντίστοιχα. Ο τελεστής αύξησης (++) προσθέτει 1 στην τιμή της μεταβλητής, ενώ ο τελεστής μείωσης (–) αφαιρεί 1. Αυτοί οι τελεστές μπορούν να εφαρμοστούν σε μεταβλητές ακέραιου αριθμού, κινητής υποδιαστολής και δείκτη, παρέχοντας ευελιξία στη χρήση τους.







Ας εξερευνήσουμε αυτούς τους τελεστές μέσα από ένα πρακτικό παράδειγμα:



#include
χρησιμοποιώντας χώρο ονομάτων std ;

ενθ κύριος ( )
{

ενθ μετρητής = 0 ;

// Αύξηση χειριστή
cout << 'Αρχική τιμή: ' << μετρητής << endl ;

μετρητής ++ ;
cout << 'Αξία μετά την αύξηση: ' << μετρητής << endl ;

// Τελιστής μείωσης
μετρητής -- ;
cout << 'Αξία μετά από μείωση: ' << μετρητής << endl ;

ΕΠΙΣΤΡΟΦΗ 0 ;
}

Αυτό το απλό πρόγραμμα C++ περιλαμβάνει την απαραίτητη βιβλιοθήκη ροής εισόδου/εξόδου με '#include '. Μέσα στη συνάρτηση 'main()', εγκαινιάζουμε μια ακέραια μεταβλητή που ονομάζεται 'counter' και της εκχωρούμε μια αρχική τιμή 0. Χρησιμοποιώντας τη δήλωση 'cout', εκτυπώνουμε την αρχική τιμή του 'counter' στην κονσόλα, παρέχοντας μια βάση για την επίδειξή μας. Προχωρώντας προς τα εμπρός, ο τελεστής αύξησης (counter++) χρησιμοποιείται για να αυξήσει την τιμή της μεταβλητής «counter» κατά 1.



Μετά από αυτή τη λειτουργία, η ενημερωμένη τιμή του 'counter' εμφανίζεται χρησιμοποιώντας μια άλλη δήλωση 'cout'. Στη συνέχεια, χρησιμοποιούμε τον τελεστή μείωσης (counter-) για να μειώσουμε την τιμή του 'counter' κατά 1. Το αποτέλεσμα εμφανίζεται στη συνέχεια στην κονσόλα. Τελικά, το πρόγραμμα ολοκληρώνεται με το 'return 0;' δήλωση που υποδηλώνει επιτυχή εκτέλεση.





Η εικόνα εξόδου δείχνει την αρχική τιμή, την τιμή μετά την αύξηση και τη μειωμένη τιμή.



Παράδειγμα 2: Θετικοί (+) και αρνητικοί (-) τελεστές

Ενώ ο θετικός μονογενής τελεστής χρησιμοποιείται σπάνια, ο αρνητικός τελεστής είναι θεμελιώδης για την αλλαγή του πρόσημου μιας μεταβλητής.

#include
Χρησιμοποιώντας χώρο ονομάτων std ;

ενθ κύριος ( ) {
ενθ θετική αξία = 10 ;
ενθ αρνητική τιμή = - θετική αξία ;

cout << 'Θετική αξία:' << θετική αξία << endl ;
cout << 'Αρνητική τιμή:' << αρνητική τιμή << endl ;

ΕΠΙΣΤΡΟΦΗ 0 ;
}

Αρχικοποιούμε δύο ακέραιες μεταβλητές για αυτό το παράδειγμα κώδικα που είναι 'positiveValue' και 'negativeValue'. Η 'θετικήΤιμή' εκχωρείται με την τιμή 10. Στη συνέχεια, δηλώνουμε την 'αρνητικήΤιμή' και την εκχωρούμε με την άρνηση της 'θετικήςΤιμής' χρησιμοποιώντας τον τελεστή unary minus. Αυτός ο τελεστής αλλάζει ουσιαστικά το πρόσημο της αρχικής τιμής. Στη συνέχεια, χρησιμοποιούμε τη δήλωση 'cout' για να εμφανίσουμε τόσο τη θετική όσο και την αρνητική έξοδο στην κονσόλα. Τέλος, το πρόγραμμα επιστρέφει 0 που υποδηλώνει την επιτυχή ολοκλήρωση της κύριας λειτουργίας.

Όταν εκτελείται, αυτό το πρόγραμμα εξάγει τις θετικές και αρνητικές τιμές.

Παράδειγμα 3: Λογικός ΟΧΙ (!) Χειριστής

Ο μοναδικός τελεστής στη C++, που συμβολίζεται με το '!' σύμβολο, είναι γνωστός ως ο λογικός τελεστής NOT. Έχει σχεδιαστεί για να αντιστρέφει την τιμή αλήθειας μιας δεδομένης έκφρασης. Λειτουργεί σε έναν μόνο τελεστή που είναι συνήθως μια λογική έκφραση ή μια συνθήκη. Η λογική πράξη NOT δίνει ένα 'αληθές' αποτέλεσμα όταν ο τελεστής είναι 'false' και παράγει ένα 'false' αποτέλεσμα όταν ο τελεστής είναι 'true'.

Ακολουθεί ένα απλό παράδειγμα που δείχνει τη χρήση του λογικού τελεστή NOT:

#include
χρησιμοποιώντας χώρο ονομάτων std ;

ενθ κύριος ( ) {
bool είναι αλήθεια = αληθής ;
bool είναι Λάθος = ψευδής ;

bool resultNotTrue = ! είναι αλήθεια ;
bool resultNotFalse = ! είναι Λάθος ;

cout << 'Αρχική αξία:' << είναι αλήθεια << ', Μετά ΟΧΙ: ' << resultNot True << endl ;
cout << 'Αρχική αξία:' << είναι Λάθος << ', Μετά ΟΧΙ: ' << resultNotFalse << endl ;

ΕΠΙΣΤΡΟΦΗ 0 ;
}

Σε αυτό το παράδειγμα, δηλώνουμε δύο μεταβλητές Boole, 'isTrue' και 'isFalse'. Στη συνέχεια εφαρμόζουμε τον λογικό τελεστή NOT σε κάθε μεταβλητή, αποθηκεύοντας τα αποτελέσματα σε 'resultNotTrue' και 'resultNotFalse', αντίστοιχα. Το πρόγραμμα εκτυπώνει στη συνέχεια τις αρχικές τιμές και τα αποτελέσματα της λειτουργίας λογικού NOT και για τις δύο μεταβλητές.

Κατά την εκτέλεση αυτού του προγράμματος, θα παρατηρήσουμε ότι ο λογικός τελεστής NOT αντιστρέφει την τιμή αλήθειας του 'isTrue' (αρχικά ορίστηκε σε true), καθιστώντας το false. Ομοίως, αντιστρέφει την τιμή αλήθειας του 'isFalse' (αρχικά false), δίνοντας true.

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

Παράδειγμα 4: Χειριστής NOT (~) bitwise

Ο τελεστής NOT (~) στη C++ είναι ένας μονομερής τελεστής που εκτελεί την άρνηση κατά bit κάθε bit του τελεστή του. Λειτουργεί με θεμελιώδεις τύπους δεδομένων, συγκεκριμένα με ενσωματωμένους, όπως ακέραιους. Το αποτέλεσμα επιτυγχάνεται αντιστρέφοντας κάθε μεμονωμένο bit του τελεστή, μετατρέποντας τα 0 σε 1 και τα 1 σε 0.

Για να δείξετε τη χρήση του, εξετάστε το ακόλουθο απόσπασμα κώδικα:

#include
χρησιμοποιώντας χώρο ονομάτων std ;

ενθ κύριος ( ) {
ενθ αρχική αξία = 5 ;

ενθ resultBitwiseNot = ~originalValue ;

cout << 'Αρχική αξία:' << αρχική αξία << ', Μετά το Bitwise NOT: ' << resultBitwiseNot << endl ;

ΕΠΙΣΤΡΟΦΗ 0 ;
}

Σε αυτό το παράδειγμα, δηλώνουμε μια ακέραια μεταβλητή 'originalValue' με την τιμή '5'. Στη συνέχεια, χρησιμοποιούμε τον τελεστή NOT (~) σε αυτή τη μεταβλητή. Το αποτέλεσμα αυτής της μεταβλητής αποθηκεύεται στο 'resultBitwiseNot'. Στη συνέχεια, το πρόγραμμα εκτυπώνει την αρχική τιμή και το αποτέλεσμα μετά τη λειτουργία NOT χρησιμοποιώντας τη δήλωση 'cout'.

Όταν εκτελούμε αυτό το πρόγραμμα, θα δούμε ότι ο τελεστής NOT αντιστρέφει κάθε bit της δυαδικής αναπαράστασης του 'originalValue', με αποτέλεσμα μια νέα τιμή.

Παράδειγμα 5: Τελεστές διεύθυνσης και κατευθύνσεων

Ο τελεστής διεύθυνσης, που συμβολίζεται με το σύμβολο '&', εξυπηρετεί τον σκοπό της ανάκτησης της θέσης μνήμης μιας μεταβλητής. Επιστρέφει έναν δείκτη στη μεταβλητή που επιτρέπει μια έμμεση πρόσβαση στην τιμή της. Ο τελεστής έμμεσης κατεύθυνσης ή απόκλισης αναφοράς (*) λαμβάνει την τιμή που είναι αποθηκευμένη στη θέση μνήμης που καθορίζεται από έναν δείκτη. Παρέχει έναν τρόπο εργασίας με τα πραγματικά δεδομένα μέσω ενός δείκτη έμμεσα.

Ας κατανοήσουμε την έννοια με ένα παράδειγμα:

#include
χρησιμοποιώντας χώρο ονομάτων std ;

ενθ κύριος ( ) {
ενθ αξία = 99 ;

cout << 'Αρχική αξία:' << αξία << endl ;

ενθ * πτρ = & αξία ;
cout << 'Διεύθυνση μνήμης:' << πτρ << endl ;

ενθ retrievedValue = * πτρ ;
cout << 'Ανακτημένη τιμή: ' << retrievedValue << endl ;

ΕΠΙΣΤΡΟΦΗ 0 ;
}

Αυτός ο κώδικας αποτελεί παράδειγμα της χρήσης τελεστών διεύθυνσης και έμμεσων κατευθύνσεων. Αρχικά, μια ακέραια μεταβλητή με το όνομα 'value' αρχικοποιείται με την τιμή 99. Στη συνέχεια, η αρχική τιμή του 'value' εξάγεται στην κονσόλα. Στη συνέχεια, δηλώνεται μια μεταβλητή δείκτη «ptr» και χρησιμοποιείται ο τελεστής διεύθυνσης (&) για να εκχωρηθεί η διεύθυνση μνήμης της «τιμής» στο «ptr». Στη συνέχεια, το πρόγραμμα εξάγει αυτήν τη διεύθυνση μνήμης, εμφανίζοντας τη βασική λειτουργία του χειριστή «διεύθυνσης».

Μετά από αυτό, δηλώνεται μια νέα ακέραια μεταβλητή που είναι 'retrievedValue' και χρησιμοποιείται ο τελεστής έμμεσων κατευθύνσεων (*) για να ανακτήσει την τιμή που είναι αποθηκευμένη στη διεύθυνση μνήμης που επισημαίνεται με 'ptr'. Στη συνέχεια, η ανακτημένη τιμή εξάγεται στην κονσόλα.

συμπέρασμα

Αυτό το άρθρο παρείχε μια περιεκτική εξερεύνηση των unary τελεστών στη C++. Ξεκινήσαμε κατηγοριοποιώντας τους μοναδιαίους τελεστές σε διάφορους τύπους, συμπεριλαμβανομένων αριθμητικών, λογικών, bitwise και εκείνων που σχετίζονται με τη διεύθυνση και την έμμεση κατεύθυνση. Παραδείγματα πραγματικών καταστάσεων για να καταδειχθεί η χρήσιμη εφαρμογή αυτών των τελεστών. Αυτοί οι τελεστές παίζουν κομβικούς ρόλους στον προγραμματισμό της C++ που επιτρέπει στους προγραμματιστές να εργάζονται αποτελεσματικά με δείκτες και να διαχειρίζονται τη μνήμη.