Σημείωση
Η πρόσβαση σε αυτή τη σελίδα απαιτεί εξουσιοδότηση. Μπορείτε να δοκιμάσετε να συνδεθείτε ή να αλλάξετε καταλόγους.
Η πρόσβαση σε αυτή τη σελίδα απαιτεί εξουσιοδότηση. Μπορείτε να δοκιμάσετε να αλλάξετε καταλόγους.
Note
Οι ομάδες ενδιαφέροντος της κοινότητας έχουν πλέον μετακινηθεί από το Yammer στο Microsoft Viva Engage. Για να συμμετάσχετε σε μια κοινότητα Viva Engage και να συμμετάσχετε στις τελευταίες συζητήσεις, συμπληρώστε τη φόρμα Αίτηση πρόσβασης στο Finance and Operations Viva Engage Community και επιλέξτε την κοινότητα στην οποία θέλετε να συμμετάσχετε.
Αυτό το άρθρο περιγράφει τους τελεστές που υποστηρίζονται στο X++.
Τελεστές ανάθεσης
Μια ανάθεση αλλάζει την τιμή μιας μεταβλητής ή πεδίου. Ο παρακάτω πίνακας εμφανίζει τους τελεστές ανάθεσης X++. Δεν υπάρχει διαφορά μεταξύ των τελεστών προθήματος και postfix.
| Τελεστής | Περιγραφή |
|---|---|
= |
Αντιστοιχίστε την παράσταση στα δεξιά του συμβήματος ίσον στη μεταβλητή στα αριστερά. |
+= |
Αντιστοιχίστε την τρέχουσα τιμή μεταβλητής συν την παράσταση στα δεξιά της μεταβλητής στα αριστερά. |
++ |
Προσαύξηση της μεταβλητής κατά 1. |
-= |
Αντιστοιχίστε την τρέχουσα τιμή μεταβλητής μείον την παράσταση στα δεξιά της μεταβλητής στα αριστερά. |
-- |
Να υποβαθμίσει τη μεταβλητή κατά 1. |
Παραδείγματα κώδικα για τελεστές ανάθεσης
// An example of assignment operators and their output.
static void Example1()
{
int i = 1;
// Using the = operator. i is assigned the value of i, plus 1. i = 2.
i = i + 1;
info(strFmt("Example 1: The result is "), i); // The result is 2.
}
static void Example2()
{
int i = 1;
// Using the += operator. i is assigned the value of i, plus 1.
// i = 2 (i = i + 1).
i += 1;
info(strFmt("Example 2: The result is "), i); // The result is 2.
}
static void Example3()
{
int i = 1;
// Using the ++ operator. i is incremented by 1, and then
// by 1 again in the second statement. The final value of i is 3.
i++;
++i;
info(strFmt("Example 3: The result is "), i); // The result is 3.
}
static void Example4()
{
int i = 1;
// Using the -= operator. i is assigned the value of i minus 1.
// i = 0 (i = i - 1).
i -= 1;
info(strFmt("Example 4: The result is "), i); // The result is 0.
}
static void Example5()
{
int i = 1;
// Using the -- operator. i is decremented by 1, and then by
// 1 again in the second statement. The final value of i is -1.
i--;
--i;
info(strFmt("Example 5: The result is "), i); // The result is -1.
}
Αριθμητικοί τελεστές
Χρησιμοποιείτε αριθμητικούς τελεστές για την εκτέλεση αριθμητικών υπολογισμών. Οι περισσότεροι τελεστές είναι δυαδικοί και λαμβάνουν δύο τελεστέους. Ωστόσο, ο τελεστής not (~) είναι μοναδιαίος και λαμβάνει μόνο έναν τελεστέο. Σύνταξη για δυαδικούς τελεστές: expression1ArithmeticOperatorexpression2 Σύνταξη για μοναδιαίους τελεστές: ArithmeticOperatorexpression1
| Τελεστής | Περιγραφή |
|---|---|
<< |
Ο τελεστής αριστερής μετατόπισης εκτελεί παράσταση2 αριστερή μετατόπιση (πολλαπλασιασμός κατά 2) στην παράσταση1. |
>> |
Ο τελεστής δεξιάς μετατόπισης εκτελεί παράσταση2 δεξιά μετατόπιση (διαίρεση με 2) στην παράσταση1. |
* |
Ο τελεστής πολλαπλασιασμού πολλαπλασιάζει την παράσταση1 με την παράσταση2. |
/ |
Ο τελεστής διαίρεσης διαιρεί την παράσταση1 με την παράσταση2. |
DIV |
Ο τελεστής διαίρεσης ακέραιων εκτελεί μια ακέραια διαίρεση της παράστασης1 κατά expression2. |
MOD |
Ο τελεστής υπολοίπου ακέραιου επιστρέφει το υπόλοιπο μιας ακέραιας διαίρεσης της παράστασης1 κατά παράσταση2. |
~ |
Ο μη τελεστής, ή μοναδιαίος τελεστής, εκτελεί μια δυαδική μη λειτουργία. |
& |
Ο δυαδικός τελεστής AND εκτελεί μια δυαδική λειτουργία και στην παράσταση1 και την παράσταση2. |
^ |
Ο δυαδικός τελεστής XOR εκτελεί μια δυαδική λειτουργία XOR στην παράσταση1 και την παράσταση2. |
| |
Ο δυαδικός τελεστής OR εκτελεί μια δυαδική ή λειτουργία στην παράσταση1 και την παράσταση2. |
+ |
Ο τελεστής "συν " προσθέτει την παράσταση1 στην παράσταση2. |
- |
Ο τελεστής μείον αφαιρεί την παράσταση2 από την παράσταση1. |
? |
Ο τελεστής ternary λαμβάνει τρεις παραστάσεις: expression1 ? expression2 : expression3. Εάν η παράσταση1 είναι true, επιστρέφεται η παράσταση2 . Διαφορετικά, επιστρέφεται η παράσταση3 . |
Παραδείγματα κώδικα για αριθμητικούς τελεστές
int a = 1 << 4; // Perform four left shifts on 1 (1*2*2*2*2). a=16.
int b = 16 >> 4; // Perform four right shifts on 16 (16/2/2/2/2). b=1.
int c = 4 * 5; // Multiply 4 by 5. c=20.
int d = 20 / 5; // Divide 20 by 5. d=4.
int e = 100 div 21; // Return the integer division of 100 by 21. e=4 (4*21 = 84, remainder 16).
int f = 100 mod 21; // Return the remainder of the integer division of 100 by 21. f=16.
int g = ~1; // Binary negate 1 (all bits are reversed). g=-2.
int h = 1 & 3; // Binary AND. Return the bits that are in common in the two integers. h=1.
int i = 1 | 3; // Binary OR. Return the bits that are set in either 1 or 3. i=3.
int j = 1 ^ 3; // Binary XOR. Return the bits that are set in 1 and NOT set in 3, and vice versa. j=2.
int k = 1 + 3; // Add 1 and 3. k=4.
int l = 3 - 1; // Subtract 1 from 3. l=2.
int m = (400 > 4) ? 1 : 5; // If 400>4, 1 is returned. Otherwise, 5 is returned. Because 400>4, 1 is returned. m=1.
Τελεστές παράστασης
Οι as τελεστές παράστασης and is ελέγχουν αναθέσεις downcast. Οι αναθέσεις downcast περιλαμβάνουν μεταβίβαση κλάσης ή πίνακα. Οι προτάσεις ανάθεσης που μπορεί να προκαλέσουν έμμεσα σφάλματα που είναι δύσκολο να προβλεφθούν και να διαγνωστούν. Μπορείτε να χρησιμοποιήσετε τη as λέξη-κλειδί για να αναφέρετε ρητά τα downcasts σας. Μπορείτε να χρησιμοποιήσετε τη is λέξη-κλειδί για να ελέγξετε εάν ένα downcast είναι έγκυρο κατά τον χρόνο εκτέλεσης.
Η λέξη-κλειδί as
Χρησιμοποιήστε τη as λέξη-κλειδί για αναθέσεις που προέρχονται από μια μεταβλητή βασικής κλάσης σε μια παραγόμενη μεταβλητή κλάσης. Η as λέξη-κλειδί υποδεικνύει σε άλλους προγραμματιστές και στο πρόγραμμα μεταγλώττισης ότι πιστεύετε ότι το downcast θα είναι έγκυρο κατά τον χρόνο εκτέλεσης.
- Το πρόγραμμα μεταγλώττισης αναφέρει ένα σφάλμα για προτάσεις ανάθεσης downcast που δεν διαθέτουν τη
asλέξη-κλειδί. - Κατά τον χρόνο εκτέλεσης, η
asλέξη-κλειδί προκαλεί την αντιστοίχισηnullτης πρότασης ανάθεσης downcast εάν το downcast δεν είναι έγκυρο. - Αυτή η
isλέξη-κλειδί χρησιμοποιείται συχνά για την ασφαλή δοκιμή της λειτουργίας της λέξης-κλειδιούas.
Παράδειγμα κώδικα για το ως λέξη-κλειδί
Στο παρακάτω παράδειγμα κώδικα, η κλάση DerivedClass επεκτείνει την κλάση BaseClass . Το παράδειγμα κώδικα περιέχει δύο έγκυρες αναθέσεις μεταξύ των βασικών και παραγόμενων μεταβλητών του. Η ανάθεση upcast σε basec δεν απαιτεί τη as λέξη-κλειδί, αλλά η ανάθεση downcast σε παραγόμενο απαιτεί τη as λέξη-κλειδί. Ο ακόλουθος κώδικας θα μεταγλωττιστεί και θα εκτελεστεί χωρίς σφάλματα.
static void AsKeywordExample()
{
// DerivedClass extends BaseClass.
BaseClass basec;
DerivedClass derivedc;
// BottomClass extends DerivedClass.
BottomClass bottomc;
derivedc = new DerivedClass();
// AS is not required for an upcast assignment like this.
basec = derivedc;
// AS is required for a downcast assignment like this.
derivedc = basec as DerivedClass;
bottomc = new BottomClass();
// AS causes this invalid downcast to assign null.
bottomc = basec as DerivedClass;
}
Η λέξη-κλειδί is
Η is λέξη-κλειδί επαληθεύει εάν ένα αντικείμενο είναι δευτερεύοντας τύπος μιας καθορισμένης κλάσης. Η is παράσταση επιστρέφει true εάν το αντικείμενο είναι δευτερεύοντας τύπος της κλάσης ή εάν το αντικείμενο είναι του ίδιου τύπου με την κλάση. Το πρόγραμμα μεταγλώττισης αναφέρει ένα σφάλμα εάν μια is παράσταση λέξης-κλειδιού συγκρίνει δύο τύπους, αλλά κανένας τύπος δεν είναι δευτερεύοντας τύπος και δεν είναι του ίδιου τύπου. Το πρόγραμμα μεταγλώττισης αναφέρει ένα παρόμοιο σφάλμα για οποιαδήποτε απλή πρόταση ανάθεσης μεταξύ δύο τύπων, όπου κανένας τύπος δεν είναι δευτερεύοντας τύπος και δεν είναι του ίδιου τύπου. Κατά τον χρόνο εκτέλεσης, ο τύπος μεταβλητής που αναφέρεται στο υποκείμενο αντικείμενο δεν έχει σχέση με τη is λέξη-κλειδί. Η is λέξη-κλειδί προκαλεί την επαλήθευση από το σύστημα του αντικειμένου στο οποίο αναφέρεται η μεταβλητή, όχι του δηλωθέντος τύπου της μεταβλητής που αναφέρεται στο αντικείμενο.
Παραδείγματα κώδικα για τη λέξη-κλειδί is
Τα παρακάτω παραδείγματα κώδικα απεικονίζουν τις συνθήκες που ελέγχουν εάν μια is παράσταση επιστρέφει true ή false. Τα παραδείγματα κώδικα εξαρτώνται από το γεγονός ότι η κλάση φόρμας και η κλάση ερωτήματος επεκτείνουν και οι δύο την κλάση TreeNode .
// The compiler issues an error for the following code.
// The compiler ascertains that the Form class and the Query class are not
// part of the same inheritance hierarchy. Both the Form class and the Query class
// extend the TreeNode class, but neither Form nor Query is a subtype of the other.
Form myForm = new Form();
info(strFmt("%1", (myForm is Query)));
// The Infolog displays 0 during run time, where 0 means false. No supertype
// object can be considered to also be of its subtype class.
TreeNode myTreeNode = new TreeNode();
info(strFmt("%1", (myTreeNode is Form)));
// The Infolog displays 0 during run time, where 0 means false. A null
// reference causes the is expression to return false.
Form myForm;
info(strFmt("%1", (myForm is Form)));
// The Infolog displays 1 during run time, where 1 means true.
// An object is an instance of its own class type.
Form myForm = new Form();
info(strFmt("%1", (myForm is Form)));
// The Infolog displays 1 during run time, where 1 means true.
// Every subtype is also of its supertype.
Form myForm = new Form();
info(strFmt("%1", (myForm is TreeNode)));
// The Infolog displays 1 during run time, where 1 means true.
// The type of the underlying object matters in the is expression,
// not the type of the variable that references the object.
Form myForm = new Form();
TreeNode myTreeNode;
myTreeNode = myForm; // Upcast.
info(strFmt("%1", (myTreeNode is Form)));
Παράδειγμα κώδικα για το "είναι" και "ως λέξεις-κλειδιά"
Το παρακάτω παράδειγμα κώδικα περιέχει μια τυπική χρήση της λέξης-κλειδιού is . Η as λέξη-κλειδί χρησιμοποιείται αφού η is λέξη-κλειδί επαληθεύει ότι η as λέξη-κλειδί θα επιτύχει. Σε αυτό το παράδειγμα, οι is λέξεις-κλειδιά και as είναι κεφαλαία για να γίνουν πιο ορατά.
static void IsKeywordExample()
{
DerivedClass derivedc;
BaseClass basec;
basec = new DerivedClass(); // An upcast.
if (basec IS DerivedClass)
{
info("Test 1: (basec IS DerivedClass) is true. Good.");
derivedc = basec AS DerivedClass;
}
basec = new BaseClass();
if (!(basec IS DerivedClass))
{
info("Test 2: !(basec IS DerivedClass) is true. Good.");
}
}
//Output to the Infolog
Test 1: (basec IS DerivedClass) is true. Good.
Test 2: (!(basec IS DerivedClass)) is true. Good.
Κλάση αντικειμένου ως ειδική περίπτωση
Η κλάση Object μπορεί να εμφανίζεται ως ειδική περίπτωση στη λειτουργικότητα μεταβίβασης. Το πρόγραμμα μεταγλώττισης παρακάμπτει τον τύπο ελέγχου για αναθέσεις προς και από μεταβλητές που δηλώνονται ότι είναι τύπου Αντικειμένου. Ορισμένες μεταβιβάζονται από την κλάση Object , ορισμένες μεταβιβάζονται από μια άλλη κλάση και ορισμένες δεν μεταβιβάζονται από οποιαδήποτε κλάση. Παρόλο που η κλάση Dialog δεν λαμβάνει από καμία κλάση, οι προτάσεις ανάθεσης και κλήσης στο ακόλουθο παράδειγμα κώδικα λειτουργούν. Ωστόσο, εάν η ανάθεση είναι bank4 = dlog3;, θα αποτύχει κατά τον χρόνο μεταγλώττισης, επειδή οι Τράπεζα και Παράθυρο διαλόγου δεν έχουν καμία σχέση μεταβίβασης μεταξύ τους. Το πρόγραμμα μεταγλώττισης εκτελεί μόνο μία μικρή επικύρωση σε αναθέσεις σε μια μεταβλητή που δηλώνεται ότι είναι της κλάσης Αντικειμένου . Το πρόγραμμα μεταγλώττισης επαληθεύει ότι το στοιχείο που εκχωρείται στη μεταβλητή Αντικειμένου είναι μια παρουσία μιας κλάσης. Το πρόγραμμα μεταγλώττισης δεν επιτρέπει την ανάθεση μιας παρουσίας ενός buffer πίνακα στη μεταβλητή Αντικειμένου . Επιπλέον, το πρόγραμμα μεταγλώττισης δεν επιτρέπει στοιχειώδεις τύπους δεδομένων, όπως int ή str, να εκχωρηθούν στη μεταβλητή Αντικείμενο .
static void ObjectExample()
{
Bank bank4;
Object obj2;
Dialog dlog3 = new Dialog("Test 4.");
obj2 = dlog3; // The assignment does work.
obj2.run(false); // The call causes the dialog to appear.
info("Test 4a is finished.");
}
Tables
Όλοι οι πίνακες μεταβιβάζονται απευθείας από τον κοινό πίνακα συστήματος, εκτός εάν μεταβιβάζονται ρητά από έναν διαφορετικό πίνακα. Δεν είναι δυνατή η άμεση λειτουργία του κοινού πίνακα. Δεν υπάρχει στην υποκείμενη φυσική βάση δεδομένων. Ο πίνακας Common λαμβάνει την τιμή από την κλάση xRecord , αλλά με έναν ειδικό τρόπο που δεν είναι κατάλληλος για τη is λέξη-κλειδί ή τη as λέξη-κλειδί. Όταν η as λέξη-κλειδί χρησιμοποιείται για την εκτέλεση ενός μη έγκυρου downcast μεταξύ πινάκων, η μεταβλητή προορισμού αναφέρεται σε μια μη χρησιμοποιήσιμη οντότητα που δεν είναι null. Οποιαδήποτε προσπάθεια κατάργησης αναφοράς της μεταβλητής προορισμού θα προκαλέσει σφάλμα που διακόπτει το πρόγραμμα.
Το είναι και ως λέξεις-κλειδιά και εκτεταμένοι τύποι δεδομένων
Κάθε εκτεταμένος τύπος δεδομένων διαθέτει μια ιδιότητα Extends . Το στυλ μεταβίβασης που ελέγχει αυτή η ιδιότητα διαφέρει από το στυλ μεταβίβασης για το is οποίο έχουν σχεδιαστεί οι λέξεις-κλειδιά και as .
Σχεσιακοί τελεστές
Ο παρακάτω πίνακας παραθέτει τους σχεσιακόυς τελεστές που μπορούν να χρησιμοποιηθούν σε X++. Οι περισσότεροι τελεστές είναι δυαδικοί και λαμβάνουν δύο τελεστέους. Ωστόσο, ο τελεστής not (!) είναι μοναδιαίος και λαμβάνει μόνο έναν τελεστέο. Σύνταξη για δυαδικούς τελεστές: expression1relationalOperatorexpression2 Σύνταξη για μοναδιαίους τελεστές: relationalOperatorexpression1
| Τελεστής | Περιγραφή |
|---|---|
like |
Ο σχεσιακός τελεστής like επιστρέφει true if expression1 είναι like expression2. |
== |
Ο ίσος σχεσιακός τελεστής επιστρέφει true εάν και οι δύο παραστάσεις είναι ίσες. |
>= |
Ο μεγαλύτερος ή ίσος με σχεσιακό τελεστή επιστρέφει true εάν η παράσταση1 είναι μεγαλύτερη ή ίση με την παράσταση2. |
<= |
Ο μικρότερος ή ίσος με τον σχεσιακό τελεστή επιστρέφει true εάν η παράσταση1 είναι μικρότερη ή ίση με την παράσταση2. |
> |
Ο τελεστής μεγαλύτερο από τον σχεσιακό επιστρέφει true εάν η παράσταση1 είναι μεγαλύτερη από την παράσταση2. |
< |
Ο τελεστής μικρότερος από τον σχεσιακό τελεστή επιστρέφει true εάν το expression1 είναι μικρότερο από το expression2. |
!= |
Ο μη ίσος σχεσιακός τελεστής επιστρέφει true εάν η παράσταση1 διαφέρει από την παράσταση (δηλαδή, εάν δεν είναι ίση με) την παράσταση2. |
&& |
Ο σχεσιακός τελεστής και επιστρέφει true εάν αμφότερες οι παραστάσεις1 και expression2 είναι true. |
|| |
Ο σχεσιακός τελεστής or επιστρέφει true εάν η παράσταση1 ή η expression2 είναι true ή εάν και οι δύο είναι true. |
! |
Ο μη ή μοναδιαίος σχεσιακός τελεστής ακυρώνει την παράσταση. Επιστρέφει true εάν η παράσταση είναι false και false εάν η παράσταση είναι true. |
Ο τελεστής like
Ο like τελεστής μπορεί να χρησιμοποιηθεί * ως χαρακτήρας μπαλαντέρ για μηδέν ή περισσότερους χαρακτήρες και ? ως χαρακτήρα μπαλαντέρ για έναν χαρακτήρα. Το μέγιστο μήκος του τελεστέου είναι 1.000 χαρακτήρες. Ο like τελεστής αξιολογείται από το υποκείμενο SQL, επομένως το αποτέλεσμα μπορεί να διαφέρει σε διαφορετικές εγκαταστάσεις. Εάν οι παραστάσεις που συγκρίνετε περιέχουν μια διαδρομή αρχείου, πρέπει να συμπεριλάβετε τέσσερις ανάστροφες καθέτους μεταξύ κάθε στοιχείου, όπως φαίνεται στο παρακάτω παράδειγμα.
select * from xRefpaths
where xRefPaths.Path like "\\\\Classes\\\\AddressSelectForm"
Ο τελεστής ίσον (==)
Όταν χρησιμοποιείτε τον τελεστή ίσον (==) για τη σύγκριση αντικειμένων, οι αναφορές αντικειμένων συγκρίνονται και όχι τα ίδια τα αντικείμενα. Αυτή η συμπεριφορά μπορεί να προκαλέσει προβλήματα εάν συγκρίνετε δύο αντικείμενα, ένα από τα οποία βρίσκεται στο διακομιστή και το άλλο βρίσκεται στο πρόγραμμα-πελάτη. Σε αυτές τις περιπτώσεις, θα πρέπει να χρησιμοποιήσετε τη μέθοδο ίσον στην κλάση αντικειμένου . Μπορείτε να παρακάμψετε αυτή τη μέθοδο για να καθορίσετε τι σημαίνει ότι δύο αντικείμενα θα είναι ίσα. Εάν δεν παρακάμψετε τη μέθοδο ίσον , η σύγκριση είναι πανομοιότυπη με τη σύγκριση που γίνεται με τον τελεστή ίσον (==).
Παραδείγματα κώδικα για σχεσιακόυς τελεστές
"Jones" like "Jo?es" // Returns true, because the ? is equal to any single character.
"Fabrikam, Inc." like "Fa*" // Returns true, because the * is equal to zero or more characters.
(( 42 * 2) == 84) // Returns true, because 42*2 is equal to 84.
today() >= 1\1\1980 // Returns true, because today is later than January 1, 1980.
((11 div 10) >= 1) // Returns true, because 11 div 10 is 1 (therefore, >= 1 is true).
(11<= 12) // Returns true, because 11 is less than 12.
((11 div 10) > 1) // Returns false, because 11 div 10 is 1.
(11 div 10) < 1) // Returns false, because 11 div 10 is 1.
(11 != 12) // Returns true, because 11 is not equal to 12.
(1 == 1) && (3 > 1) // Returns true, because both expressions are true.
Προτεραιότητα τελεστών
Η σειρά με την οποία αξιολογείται μια σύνθετη παράσταση μπορεί να είναι σημαντική. Για παράδειγμα, (x + y / 100) δίνει ένα διαφορετικό αποτέλεσμα, ανάλογα με το αν η πρόσθεση ή η διαίρεση γίνεται πρώτη. Μπορείτε να χρησιμοποιήσετε παρενθέσεις (()) για να πείτε ρητά στο πρόγραμμα μεταγλώττισης πώς θα πρέπει να αξιολογήσει μια παράσταση. Για παράδειγμα, μπορείτε να καθορίσετε (x + y) / 100. Εάν δεν πείτε ρητά στο πρόγραμμα μεταγλώττισης τη σειρά με την οποία θέλετε να εκτελεστούν οι λειτουργίες, η σειρά βασίζεται στην προτεραιότητα που εκχωρείται στους τελεστές. Για παράδειγμα, ο τελεστής διαίρεσης έχει υψηλότερη προτεραιότητα από τον τελεστή πρόσθεσης. Επομένως, για την παράσταση x + y / 100, το πρόγραμμα μεταγλώττισης y / 100 αξιολογείται πρώτο. Με άλλα λόγια, x + y / 100 το ισοδυναμεί με x + (y / 100). Για να κάνετε τον κώδικά σας ευανάγνωστο και να τον διατηρήσετε, να είστε σαφείς. Χρησιμοποιήστε παρενθέσεις για να υποδείξετε ποιοι τελεστές πρέπει να αξιολογηθούν πρώτοι. Ο παρακάτω πίνακας παραθέτει τους τελεστές με σειρά προτεραιότητας. Όσο υψηλότερος τελεστής εμφανίζεται στον πίνακα, τόσο υψηλότερη είναι η προτεραιότητα. Οι τελεστές που έχουν υψηλότερη προτεραιότητα αξιολογούνται πριν από τους τελεστές που έχουν χαμηλότερη προτεραιότητα. Σημειώστε ότι η προτεραιότητα τελεστών X++ δεν είναι ίδια με την προτεραιότητα τελεστών άλλων γλωσσών, όπως η C# και η Java.
| Ομάδες τελεστών, με σειρά προτεραιότητας | Operators |
|---|---|
| Μοναδιαίοι | - ~ ! |
| Πολλαπλασιαστική, shift, bit AND, bit αποκλειστική OR | * / % DIV << >> & ^ |
| Προσθετικό, χωρίς bit OR | + - | |
| Σχεσιακή, ισότητα | < <= == != > >= like as is |
| Λογική (AND, OR) |
&&
||
|
| Υποθετικός | ? : |
Οι τελεστές στην ίδια γραμμή έχουν ίση προτεραιότητα. Εάν μια παράσταση περιλαμβάνει περισσότερους από έναν από αυτούς τους τελεστές, αξιολογείται από αριστερά προς τα δεξιά, εκτός εάν χρησιμοποιούνται τελεστές ανάθεσης. (Οι τελεστές ανάθεσης αξιολογούνται από δεξιά προς τα αριστερά.) Για παράδειγμα, οι && επιλογές (λογικές AND) και || (λογικές OR) έχουν την ίδια προτεραιότητα και αξιολογούνται από αριστερά προς τα δεξιά. Επομένως:
-
0 && 0 || 1ισούται με1 -
1 || 0 && 0Ισούται με0.