Αριθμητικές πράξεις. Σχεσιακούς και λογικούς τελεστές

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

Αύξηση και μείωση

Οι τελεστές increment (++) και decrement (--) αυξάνουν και μειώνουν τον τελεστή κατά ένα. Έχουν δύο μορφές σημειογραφίας - πρόθεμα, όταν το σύμβολο της λειτουργίας είναι γραμμένο πριν από τον τελεστή, και postfix. Στη μορφή προθέματος, ο τελεστής τροποποιείται πρώτα και στη συνέχεια η τιμή του γίνεται η προκύπτουσα τιμή της παράστασης, ενώ στη μορφή μεταθέματος, η τιμή της έκφρασης είναι η αρχική τιμή του τελεστή και στη συνέχεια τροποποιείται.

Υπάρχουν τυπικές πράξεις αύξησης για ακέραιες, χαρακτήρες, πραγματικές και οικονομικές αξίες.

Λειτουργία καινούργιο

Η νέα λειτουργία χρησιμοποιείται για τη δημιουργία ενός νέου αντικειμένου. Μορφή λειτουργίας:

νέος τύπος ([args])

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

αντικείμενο z = νέο αντικείμενο(); int i = new int(); // το ίδιο με το int i = 0;

Κατά την εκτέλεση της νέας λειτουργίας, αρχικά εκχωρείται η απαιτούμενη ποσότητα μνήμης (για τύπους αναφοράς στο σωρό, για τύπους τιμών - στη στοίβα) και στη συνέχεια η λεγόμενη προεπιλεγμένος κατασκευαστής, δηλαδή η μέθοδος με την οποία αρχικοποιείται το αντικείμενο. Μεταβλητός τύπος τιμήςανατεθεί Προεπιλεγμένη τιμή, που ισούται με μηδέν του αντίστοιχου τύπου.

Λειτουργίες άρνησης

Αριθμητική άρνηση(μοναδικό μείον – ) αντιστρέφει το πρόσημο του τελεστή. Η τυπική λειτουργία άρνησης ορίζεται για τύπους int, long , float , διπλό και δεκαδικό . Μπορεί να εφαρμοστεί σε ποσότητες άλλων τύπων εάν είναι δυνατό για αυτούς σιωπηρή μετατροπήσε αυτούς τους τύπους.

Boolean άρνησηΤο (!) ορίζεται για τον τύπο bool . Το αποτέλεσμα της πράξης είναι ψευδές εάν ο τελεστής είναι αληθής και αληθής εάν ο τελεστής είναι ψευδής.

Αρνητική κατά bitwiseΤο (~), που συχνά ονομάζεται bitwise, αντιστρέφει κάθε bit στη δυαδική αναπαράσταση ενός τελεστή τύπου int, uint, long ή ulong.

Μετατροπή ρητού τύπου

Μια πράξη χρησιμοποιείται για τη ρητή μετατροπή μιας τιμής από έναν τύπο σε άλλο. Αυτό απαιτείται όταν δεν υπάρχει σιωπηρή μετατροπή. Κατά τη μετατροπή από μεγαλύτερο σε μικρότερο τύπο, ενδέχεται να χαθούν πληροφορίες. Μορφή λειτουργίας:

(τύπος) έκφραση

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

μήκος b = 300; int a = (int) b; // δεν χάνονται δεδομένα int d = (byte) a; // τα δεδομένα χάνονται

Πολλαπλασιασμός, διαίρεση και υπόλοιπο

Λειτουργία πολλαπλασιασμούΤο (*) επιστρέφει το αποτέλεσμα πολλαπλασιασμού δύο τελεστών. Η τυπική λειτουργία πολλαπλασιασμού ορίζεται για τους τύπους int, uint, long, ulong, float, double και δεκαδικό. Μπορεί να εφαρμοστεί σε τιμές άλλων τύπων εάν μπορούν να μετατραπούν σιωπηρά σε αυτούς τους τύπους. Ο τύπος του αποτελέσματος της πράξης είναι ίσος με τον "μεγαλύτερο" από τους τύπους τελεστών, αλλά όχι μικρότερος από το int .

πίνακας 3.2. Τα σύμβολα x και y δηλώνουν πεπερασμένες θετικές τιμές και το σύμβολο z δηλώνει το αποτέλεσμα της πράξης πραγματικού πολλαπλασιασμού. Εάν το αποτέλεσμα είναι πολύ μεγάλο για να αναπαρασταθεί από τον δεδομένο τύπο, ορίζεται στο άπειρο εάν είναι πολύ μικρό, ορίζεται στο 0. NaN (όχι αριθμός) σημαίνει ότι το αποτέλεσμα δεν είναι αριθμός.

Πίνακας 3.2. Πραγματικά αποτελέσματα πολλαπλασιασμού
* +y +0 -0 + - NaN
+x +z -z +0 -0 + - NaN
-z +z -0 +0 - + NaN
+0 +0 -0 +0 -0 NaN NaN NaN
-0 -0 +0 -0 +0 NaN NaN NaN
+ + - NaN NaN + - NaN
- - + NaN NaN - + NaN
NaN NaN NaN NaN NaN NaN NaN NaN

Λειτουργία τμήματοςΤο (/) υπολογίζει το πηλίκο του πρώτου τελεστή διαιρούμενο με το δεύτερο. Η τυπική λειτουργία διαίρεσης ορίζεται για τους τύπους int, uint, long, ulong, float, double και δεκαδικό. Μπορεί να εφαρμοστεί σε τιμές άλλων τύπων εάν υπάρχει σιωπηρή μετατροπή για αυτούς σε αυτούς τους τύπους. Ο τύπος του αποτελέσματος καθορίζεται από τους κανόνες μετατροπής, αλλά δεν είναι μικρότερος από το int .

Εάν και οι δύο τελεστές είναι ακέραιοι, το αποτέλεσμα της πράξης στρογγυλοποιείται προς τα κάτω στον πλησιέστερο ακέραιο. Αν ο διαιρέτης ίσο με μηδέν, εμφανίζεται ένα System.DivideByZeroException.

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

Πίνακας 3.3. Πραγματικά αποτελέσματα διαίρεσης
/ +y +0 -0 + - NaN
+x +z -z + - +0 -0 NaN
-z +z - + -0 +0 NaN
+0 +0 -0 NaN NaN +0 -0 NaN
-0 -0 +0 NaN NaN -0 +0 NaN
+ + - + - NaN NaN NaN
- - + - + NaN NaN NaN
NaN NaN NaN NaN NaN NaN NaN NaN

Για τις οικονομικές αξίες (δεκαδικός τύπος), η διαίρεση με το 0 και η υπερχείλιση δημιουργούν κατάλληλες εξαιρέσεις. εξαφάνιση της τάξηςτο αποτέλεσμα είναι 0.

Λειτουργία υπολοίπου τμήματοςΤο (%) ερμηνεύεται επίσης διαφορετικά για ακέραια, πραγματικά και οικονομικά μεγέθη. Εάν και οι δύο τελεστές είναι ακέραιοι, το αποτέλεσμα της πράξης υπολογίζεται χρησιμοποιώντας τον τύπο x - (x / y) * y. Εάν ο διαιρέτης είναι μηδέν, εμφανίζεται ένα System.DivideByZeroException.

Εάν τουλάχιστον ένας από τους τελεστές είναι πραγματικός, το αποτέλεσμα της πράξης υπολογίζεται χρησιμοποιώντας τον τύπο x – n * y, όπου n είναι ο μεγαλύτερος ακέραιος μικρότερος ή ίσος με το αποτέλεσμα της διαίρεσης του x με το y. Ολα πιθανούς συνδυασμούςΟι τιμές τελεστών δίνονται στον πίνακα 3.4.

Πίνακας 3.4. Πραγματικά υπόλοιπα αποτελέσματα
% +y +0 -0 + - NaN
+x +z z NaN NaN Χ Χ NaN
-z -z NaN NaN NaN
+0 +0 +0 NaN NaN +0 +0 NaN
-0 -0 -0 NaN NaN -0 -0 NaN
+ NaN NaN NaN NaN NaN NaN NaN
- NaN NaN NaN NaN NaN NaN NaN
NaN NaN NaN NaN NaN NaN NaN NaN

Για τις οικονομικές αξίες (δεκαδικός τύπος), κατά τη λήψη του υπολοίπου της διαίρεσης με το 0 και κατά την υπερχείλιση, δημιουργούνται οι αντίστοιχες εξαιρέσεις, όταν εξαφάνιση της τάξηςτο αποτέλεσμα είναι 0. Το πρόσημο του αποτελέσματος είναι ίσο με το πρόσημο του πρώτου τελεστή.

Πρόσθεση και αφαίρεση

Λειτουργία προσθήκηςΤο (+) επιστρέφει το άθροισμα δύο τελεστών. Η τυπική λειτουργία προσθήκης ορίζεται για τους τύπους int, uint, long, ulong, float, double και δεκαδικό. Μπορεί να εφαρμοστεί σε τιμές άλλων τύπων εάν υπάρχει σιωπηρή μετατροπή για αυτούς σε αυτούς τους τύπους. Ο τύπος του αποτελέσματος της πράξης είναι ίσος με τον "μεγαλύτερο" από τους τύπους τελεστών, αλλά όχι μικρότερος από το int .

Όλες οι πιθανές τιμές για πραγματικούς τελεστές δίνονται στον Πίνακα 3.5.

Πίνακας 3.5. Πραγματικά αποτελέσματα προσθήκης
+ y +0 -0 + - NaN
Χ z Χ Χ + - NaN
+0 y +0 +0 + - NaN
-0 y +0 -0 + - NaN
+ + + + + NaN NaN
- - - - NaN - NaN
NaN NaN NaN NaN NaN NaN NaN

Λειτουργία αφαίρεσηςΤο (-) επιστρέφει τη διαφορά δύο τελεστών. Η τυπική λειτουργία αφαίρεσης ορίζεται για τους τύπους int, uint, long, ulong, float, double και δεκαδικό. Μπορεί να εφαρμοστεί σε τιμές άλλων τύπων εάν υπάρχει σιωπηρή μετατροπή για αυτούς σε αυτούς τους τύπους. Ο τύπος του αποτελέσματος της πράξης είναι ίσος με τον "μεγαλύτερο" από τους τύπους τελεστών, αλλά όχι μικρότερος από το int .

Εάν και οι δύο τελεστές είναι ακέραιοι ή δεκαδικοί και το αποτέλεσμα της λειτουργίας είναι πολύ μεγάλο για να αναπαρασταθεί από τον καθορισμένο τύπο, εμφανίζεται ένα System.OverflowException.

Όλες οι πιθανές τιμές του αποτελέσματος της αφαίρεσης για πραγματικούς τελεστές δίνονται στον πίνακα 3.6. Τα σύμβολα x και y δηλώνουν πεπερασμένες θετικές τιμές και το σύμβολο z δηλώνει το αποτέλεσμα μιας πραγματικής πράξης αφαίρεσης. Αν x και y είναι ίσα, το αποτέλεσμα είναι θετικό μηδέν. Εάν το αποτέλεσμα είναι πολύ μεγάλο για να αναπαρασταθεί από τον δεδομένο τύπο, λαμβάνεται ως η τιμή "άπειρο" με το ίδιο πρόσημο με το x - y , εάν είναι πολύ μικρό, θεωρείται ότι είναι 0 με το ίδιο πρόσημο με το x - y .

Πίνακας 3.6. Πραγματικά αποτελέσματα αφαίρεσης
- y +0 -0 + - NaN
Χ z Χ Χ - + NaN
+0 +0 +0 - + NaN
-0 -0 +0 - + NaN
+ + + + NaN + NaN
- - - - - NaN NaN
NaN NaN NaN NaN NaN NaN NaN

Λειτουργίες βάρδιας

Λειτουργίες βάρδιας (<< и >> ) ισχύει για ακέραιους τελεστές. Μετατοπίζουν τη δυαδική αναπαράσταση του πρώτου τελεστή προς τα αριστερά ή προς τα δεξιά κατά τον αριθμό των δυαδικών ψηφίων που καθορίζονται από τον δεύτερο τελεστή.

Στο μετατόπιση αριστερά (<< ) освободившиеся разряды обнуляются. При μετατόπιση δεξιά(>> ) τα ελεύθερα bit γεμίζονται με μηδενικά εάν ο πρώτος τελεστής δεν είναι υπογεγραμμένος, και με ένα υπογεγραμμένο bit διαφορετικά. Οι τυπικές λειτουργίες βάρδιας ορίζονται για τους τύπους int, uint, long και ulong.

Σχεσιακές πράξεις και τεστ ισότητας

Λειτουργίες σχέσεων (< , <= , >, >= , == , != ) συγκρίνετε τον πρώτο τελεστή με τον δεύτερο. Οι τελεστές πρέπει να είναι αριθμητικός τύπος. Το αποτέλεσμα της επέμβασης είναι boolean τύπου, είναι αληθινό ή ψευδές. Οι κανόνες για τον υπολογισμό των αποτελεσμάτων δίνονται στο > y

αληθές αν το x είναι μεγαλύτερο από το y, λάθος διαφορετικά Χ<= y αληθές αν το x είναι μικρότερο ή ίσο του y, λάθος διαφορετικά x >= y αληθές αν το x είναι μεγαλύτερο ή ίσο του y, λάθος διαφορετικά

Λογικές πράξεις κατά bitwise

Λογικές πράξεις κατά bitwise(& , | , ^ ) εφαρμόζονται σε ακέραιους τελεστές και λειτουργούν στις δυαδικές αναπαραστάσεις τους. Κατά την εκτέλεση πράξεων, οι τελεστές αντιστοιχίζονται κομμάτι-κομμάτι (το πρώτο bit του πρώτου τελεστή με το πρώτο bit του δεύτερου, το δεύτερο bit του πρώτου τελεστή με το δεύτερο bit του δεύτερου, κ.λπ.). Οι τυπικές λειτουργίες ορίζονται για τους τύπους int, uint, long και ulong.

Στο bitwise σύνδεσμος(& ), το bit αποτελέσματος είναι 1 μόνο όταν τα αντίστοιχα bit και των δύο τελεστών είναι 1.

Στο δυαδική διάσταση(| ), το bit αποτελέσματος είναι 1 όταν το αντίστοιχο bit τουλάχιστον ενός από τους τελεστές είναι 1.

Με αποκλειστικό bitwise OR() ένα bit αποτελέσματος είναι 1 μόνο αν το αντίστοιχο bit ενός μόνο από τους τελεστές είναι 1.

Λειτουργίες Boolean υπό όρους

Λειτουργίες Boolean υπό όρουςΤα AND (&& ) και OR (|| ) χρησιμοποιούνται συχνότερα με τελεστικούς boolean. Το αποτέλεσμα μιας λογικής πράξης είναι αληθές, τότε το αποτέλεσμα μιας πράξης υπό όρους είναι η τιμή του δεύτερου τελεστή, διαφορετικά η τιμή του τρίτου τελεστή. Είτε ο δεύτερος τελεστής είτε ο τρίτος αξιολογείται πάντα. Ο τύπος τους μπορεί να διαφέρει.

Ο τύπος του αποτελέσματος της πράξης εξαρτάται από τον τύπο του δεύτερου και του τρίτου τελεστή. Εάν οι τελεστές είναι του ίδιου τύπου, γίνεται ο τύπος του αποτελέσματος της πράξης.

Χειριστές ανάθεσης

Χειριστές ανάθεσης(= , += , -= , *= , κ.λπ.) ορίστε μια νέα τιμή για τη μεταβλητή. Αυτές οι λειτουργίες μπορούν να χρησιμοποιηθούν σε ένα πρόγραμμα ως πλήρεις δηλώσεις.

Μορφή λειτουργίας απλή ανάθεση (= ):

μεταβλητή = έκφραση

Ο μηχανισμός για την εκτέλεση της λειτουργίας εκχώρησης είναι ο εξής: υπολογίζεται μια παράσταση και το αποτέλεσμά της αποθηκεύεται στη μνήμη στη διεύθυνση που καθορίζεται από το όνομα της μεταβλητής που βρίσκεται στα αριστερά του συμβόλου λειτουργίας. Ό,τι ήταν προηγουμένως αποθηκευμένο σε αυτήν την περιοχή μνήμης έχει χαθεί. Παραδείγματα τελεστών ανάθεσης:

Επιπλέον με την ανάθεση, ο πρώτος τελεστής προστίθεται στον δεύτερο και το αποτέλεσμα γράφεται στον πρώτο τελεστή, δηλαδή η έκφραση a += b είναι μια πιο συμπαγής αναπαράσταση της παράστασης a = a + b.

Το αποτέλεσμα μιας λειτουργίας σύνθετης ανάθεσης είναι η τιμή που γράφεται στον αριστερό τελεστή.

Χειριστές ανάθεσης δεξιά-συνειρμική, δηλαδή εκτελούνται από δεξιά προς τα αριστερά, σε αντίθεση με τις περισσότερες άλλες πράξεις (a = b = c σημαίνει a = (b = c)).

Ερωτήσεις και εργασίες για ανεξάρτητη εργασία μαθητή

  1. Πού μπορούν να δηλωθούν οι μεταβλητές; Τι περιλαμβάνεται στην περιγραφή της μεταβλητής;
  2. Τι συμβαίνει όταν χρησιμοποιείτε τελεστές σε μια έκφραση διάφοροι τύποι? Δώσε παραδείγματα.
  3. Καταγράψτε τις λειτουργίες της γλώσσας C#, ομαδοποιώντας τις κατά προτεραιότητα.
  4. Τι είναι το NaN; Σε ποιες πράξεις είναι το αποτέλεσμα NaN;
  5. Σε ποιους τύπους τελεστών μπορούν να ισχύουν οι λειτουργίες shift;
  6. Ποιες είναι οι εξαιρετικές καταστάσεις;
  7. Περιγράψτε τις αρχές χειρισμού εξαιρέσεων.

Σχεσιακούς τελεστές και λογικούς τελεστές

Σε σημειογραφία σχεσιακός τελεστήςΚαι λογικός τελεστήςόρος σχέσησημαίνει μια σχέση που μπορεί να υπάρχει μεταξύ δύο σημασιών και του όρου λογικός- η σχέση μεταξύ των λογικών τιμών "true" και "false". Και δεδομένου ότι οι σχεσιακές τελεστές παράγουν αληθή ή ψευδή αποτελέσματα, χρησιμοποιούνται συχνά μαζί με λογικούς τελεστές. Αυτός είναι ο λόγος που εξετάζονται μαζί.

Οι παρακάτω είναι οι σχεσιακόι τελεστές:

Οι λογικοί τελεστές περιλαμβάνουν τους εξής:

Το αποτέλεσμα της εκτέλεσης ενός σχεσιακού ή λογικού τελεστή είναι μια Boolean τιμή τύπου bool.

Γενικά, τα αντικείμενα μπορούν να συγκριθούν για ισότητα ή ανισότητα χρησιμοποιώντας τους σχεσιακούς τελεστές == και !=. Και οι τελεστές σύγκρισης, = μπορούν να εφαρμοστούν μόνο σε τύπους δεδομένων που υποστηρίζουν τη σχέση παραγγελίας. Επομένως, οι σχεσιακοί τελεστές μπορούν να εφαρμοστούν σε όλους αριθμητικοί τύποιδεδομένα. Αλλά οι τιμές bool μπορούν να συγκριθούν μόνο για ισότητα ή ανισότητα, αφού οι αληθείς και οι ψευδείς τιμές δεν ταξινομούνται. Για παράδειγμα, η σύγκριση true > false στο C# δεν έχει νόημα.

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

Χρήση του συστήματος. χρησιμοποιώντας System.Collections.Generic; χρησιμοποιώντας System.Linq; χρησιμοποιώντας System.Text; namespace ConsoleApplication1 ( class Program ( static void Main(string args) ( short d = 10, f = 12; bool var1 = true, var2 = false; if (d f) Console.WriteLine("d > f"); // Σύγκριση μεταβλητές var1 και var2 if (var1 & var2) Console.WriteLine("Αυτό το κείμενο δεν θα εκτυπωθεί" if (!(var1 & var2)) Console.WriteLine("!(var1 & var2) = true"); var2) Console.WriteLine("var1 | var2 = true" if (var1 ^ var2) Console.WriteLine("var1 ^ var2 = true");

Οι λογικοί τελεστές στη C# εκτελούν τις πιο συνηθισμένες λογικές πράξεις. Ωστόσο, υπάρχει μια σειρά από πράξεις που εκτελούνται σύμφωνα με τους κανόνες της τυπικής λογικής. Αυτές οι λογικές πράξεις μπορούν να κατασκευαστούν χρησιμοποιώντας τους λογικούς τελεστές που υποστηρίζονται στο C#. Κατά συνέπεια, η C# παρέχει ένα σύνολο λογικών τελεστών που επαρκούν για την κατασκευή σχεδόν οποιασδήποτε λογικής πράξης, συμπεριλαμβανομένων των υπονοούμενων. ΕΠΙΠΤΩΣΕΙΣ- Αυτό δυαδική λειτουργία, το αποτέλεσμα του οποίου είναι ψευδές μόνο αν ο αριστερός του τελεστής είναι αληθής και ο δεξιός τελεστής είναι ψευδής. (Η λειτουργία του υπονοούμενου αντανακλά την ακόλουθη αρχή: η αλήθεια δεν μπορεί να συνεπάγεται ψέμα.)

Η λειτουργία υπονοούμενων μπορεί να κατασκευαστεί με βάση έναν συνδυασμό λογικών τελεστών! και |:

Συντομευμένοι λογικοί τελεστές

Το C# παρέχει επίσης ειδικά συντομεύτηκε, παραλλαγές των λογικών τελεστών AND και OR, σχεδιασμένες να παράγουν πιο αποτελεσματικό κώδικα. Ας το εξηγήσουμε αυτό χρησιμοποιώντας τα ακόλουθα παραδείγματα λογικών πράξεων. Εάν ο πρώτος τελεστής μιας πράξης λογικού AND είναι false, τότε το αποτέλεσμά του θα είναι ψευδές ανεξάρτητα από την τιμή του δεύτερου τελεστή. Εάν ο πρώτος τελεστής μιας πράξης λογικού OR είναι αληθής, τότε το αποτέλεσμά του θα είναι αληθές ανεξάρτητα από την τιμή του δεύτερου τελεστή. Λόγω του γεγονότος ότι η τιμή του δεύτερου τελεστή σε αυτές τις πράξεις δεν χρειάζεται να υπολογιστεί, εξοικονομεί χρόνο και αυξάνει την αποτελεσματικότητα του κώδικα.

Συντόμευση λογική λειτουργίαΚαι τελείωσε με χειριστής &&, και η συντομευμένη λειτουργία λογικής Ή γίνεται χρησιμοποιώντας χειριστής ||. Αυτοί οι συντομευμένοι λογικοί τελεστές αντιστοιχούν στους κανονικούς λογικούς τελεστές & και |. Η μόνη διαφορά μεταξύ ενός συντομευμένου λογικού τελεστή και ενός κανονικού είναι ότι ο δεύτερος τελεστής του αξιολογείται μόνο όπως απαιτείται.

Τελευταία ενημέρωση: 19/06/2017

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

Δυαδικές αριθμητικές πράξεις:

    Η λειτουργία της πρόσθεσης δύο αριθμών:

    Int x = 10; int z = x + 12; // 22

    Η λειτουργία της αφαίρεσης δύο αριθμών:

    Int x = 10; int z = x - 6; // 4

    Η λειτουργία του πολλαπλασιασμού δύο αριθμών:

    Int x = 10; int z = x * 5; // 50

    λειτουργία διαίρεσης δύο αριθμών:

    Int x = 10; int z = x / 5; // 2 διπλά a = 10; διπλό b = 3; διπλό c = a / b; // 3,33333333

    Κατά τη διαίρεση, αξίζει να λάβετε υπόψη ότι εάν και οι δύο τελεστές αντιπροσωπεύουν ακέραιους αριθμούς, τότε το αποτέλεσμα θα στρογγυλοποιηθεί επίσης σε έναν ακέραιο:

    Διπλό z = 10 / 4; //το αποτέλεσμα είναι 2

    Παρόλο που το αποτέλεσμα της επέμβασης τοποθετείται τελικά μεταβλητή τύπου double, το οποίο σας επιτρέπει να αποθηκεύσετε το κλασματικό μέρος, αλλά η ίδια η λειτουργία περιλαμβάνει δύο κυριολεκτικά, τα οποία από προεπιλογή αντιμετωπίζονται ως αντικείμενα int, δηλαδή ακέραιοι, και το αποτέλεσμα θα είναι επίσης ένας ακέραιος.

    Για να βγούμε από αυτήν την κατάσταση, είναι απαραίτητο να ορίσουμε τα κυριολεκτικά ή τις μεταβλητές που εμπλέκονται στη λειτουργία ως τύπους διπλού ή float:

    Διπλό z = 10,0 / 4,0; //το αποτέλεσμα είναι 2,5

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

    Διπλό x = 10,0; διπλό z = x % 4,0; //το αποτέλεσμα είναι 2

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

    Λειτουργία αύξησης

    Η προσαύξηση μπορεί να έχει το πρόθεμα: ++x - πρώτα η τιμή της μεταβλητής x αυξάνεται κατά 1 και, στη συνέχεια, η τιμή της επιστρέφεται ως αποτέλεσμα της πράξης.

    Και υπάρχει επίσης μια προσαύξηση postfix: x++ - πρώτα επιστρέφεται η τιμή της μεταβλητής x ως αποτέλεσμα της πράξης και, στη συνέχεια, προστίθεται 1 σε αυτήν.

int x1 = 5; int z1 = ++x1; // z1=6; x1=6 Console.WriteLine($"(x1) - (z1)"); int x2 = 5; int z2 = x2++; // z2=5; x2=6 Console.WriteLine($"(x2) - (z2)");

Η λειτουργία μείωσης ή μείωσης μιας τιμής κατά ένα. Υπάρχει επίσης μια μορφή προθέματος μείωσης (--x) και μια μορφή μεταθέματος (x--).

Int x1 = 5; int z1 = --x1; // z1=4; x1=4 Console.WriteLine($"(x1) - (z1)"); int x2 = 5; int z2 = x2--; // z2=5; x2=4 Console.WriteLine($"(x2) - (z2)");

Όταν εκτελούνται πολλές αριθμητικές πράξεις ταυτόχρονα, πρέπει να λαμβάνεται υπόψη η σειρά με την οποία εκτελούνται. Προτεραιότητα λειτουργίας από την υψηλότερη προς τη χαμηλότερη:

    Αύξηση, μείωση

    Πολλαπλασιασμός, διαίρεση, υπόλοιπο

    Πρόσθεση, αφαίρεση

Για να αλλάξετε τη σειρά των πράξεων, χρησιμοποιούνται παρενθέσεις.

Εξετάστε ένα σύνολο λειτουργιών:

Int a = 3; int b = 5; int c = 40; int d = c---b*a; // a=3 b=5 c=39 d=25 Console.WriteLine($"a=(a) b=(b) c=(c) d=(d)");

Εδώ έχουμε να κάνουμε με τρεις πράξεις: μείωση, αφαίρεση και πολλαπλασιασμό. Αρχικά, η μεταβλητή c μειώνεται, μετά πολλαπλασιάζεται το b*a και τέλος αφαιρείται. Αυτό είναι, στην πραγματικότητα, το σύνολο των πράξεων έμοιαζε ως εξής:

Int d = (c--)-(b*a);

Αλλά με τη βοήθεια παρενθέσεων θα μπορούσαμε να αλλάξουμε τη σειρά των πράξεων, για παράδειγμα ως εξής:

Int a = 3; int b = 5; int c = 40; int d = (c-(--b))*a; // a=3 b=4 c=40 d=108 Console.WriteLine($"a=(a) b=(b) c=(c) d=(d)");

Συνεταιρισμός χειριστή

Όπως σημειώθηκε παραπάνω, οι πράξεις πολλαπλασιασμού και διαίρεσης έχουν την ίδια προτεραιότητα, αλλά ποιο θα είναι το αποτέλεσμα στην έκφραση:

Int x = 10 / 5 * 2;

Πρέπει να ερμηνεύσουμε αυτήν την έκφραση ως (10 / 5) * 2 ή ως 10 / (5 * 2); Εξάλλου, ανάλογα με την ερμηνεία, θα έχουμε διαφορετικά αποτελέσματα.

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

    Αριστεροί τελεστές, οι οποίοι εκτελούνται από αριστερά προς τα δεξιά

    Δεξιά συσχετιζόμενοι τελεστές, οι οποίοι εκτελούνται από τα δεξιά προς τα αριστερά

Όλοι οι αριθμητικοί τελεστές (εκτός από το πρόθεμα αύξησης και μείωσης) είναι αριστεροσυσχετιστικοί, δηλαδή εκτελούνται από αριστερά προς τα δεξιά. Επομένως, η έκφραση 10 / 5 * 2 πρέπει να ερμηνευτεί ως (10 / 5) * 2, δηλαδή το αποτέλεσμα θα είναι 4.