D Programmierung - Operatoren
Ein Operator ist ein Symbol, das den Compiler anweist, bestimmte mathematische oder logische Manipulationen durchzuführen. Die D-Sprache ist reich an integrierten Operatoren und bietet die folgenden Arten von Operatoren:
- Rechenzeichen
- Vergleichsoperatoren
- Logische Operatoren
- Bitweise Operatoren
- Zuweisungsoperatoren
- Verschiedene Operatoren
In diesem Kapitel werden nacheinander arithmetische, relationale, logische, bitweise, Zuweisungs- und andere Operatoren erläutert.
Rechenzeichen
Die folgende Tabelle zeigt alle arithmetischen Operatoren, die von der Sprache D unterstützt werden. Variable annehmenA hält 10 und variabel B hält dann 20 -
Beispiele anzeigen
Operator | Beschreibung | Beispiel |
---|---|---|
+ | Es werden zwei Operanden hinzugefügt. | A + B ergibt 30 |
- - | Es subtrahiert den zweiten Operanden vom ersten. | A - B ergibt -10 |
* * | Es multipliziert beide Operanden. | A * B ergibt 200 |
/. | Es teilt Zähler durch Zähler. | B / A ergibt 2 |
%. | Es gibt den Rest einer ganzzahligen Division zurück. | B% A ergibt 0 |
++ | Der Inkrementoperator erhöht den ganzzahligen Wert um eins. | A ++ gibt 11 |
- - | Der Dekrementierungsoperator verringert den ganzzahligen Wert um eins. | A-- gibt 9 |
Vergleichsoperatoren
Die folgende Tabelle zeigt alle relationalen Operatoren, die von der Sprache D unterstützt werden. Variable annehmenA hält 10 und variabel B hält 20, dann -
Beispiele anzeigen
Operator | Beschreibung | Beispiel |
---|---|---|
== | Überprüft, ob die Werte von zwei Operanden gleich sind oder nicht. Wenn ja, wird die Bedingung wahr. | (A == B) ist nicht wahr. |
! = | Überprüft, ob die Werte von zwei Operanden gleich sind oder nicht. Wenn die Werte nicht gleich sind, wird die Bedingung wahr. | (A! = B) ist wahr. |
> | Überprüft, ob der Wert des linken Operanden größer als der Wert des rechten Operanden ist. Wenn ja, wird die Bedingung wahr. | (A> B) ist nicht wahr. |
< | Überprüft, ob der Wert des linken Operanden kleiner als der Wert des rechten Operanden ist. Wenn ja, wird die Bedingung wahr. | (A <B) ist wahr. |
> = | Überprüft, ob der Wert des linken Operanden größer oder gleich dem Wert des rechten Operanden ist. Wenn ja, wird die Bedingung wahr. | (A> = B) ist nicht wahr. |
<= | Überprüft, ob der Wert des linken Operanden kleiner oder gleich dem Wert des rechten Operanden ist. Wenn ja, wird die Bedingung wahr. | (A <= B) ist wahr. |
Logische Operatoren
Die folgende Tabelle zeigt alle logischen Operatoren, die von der Sprache D unterstützt werden. Variable annehmenA hält 1 und variabel B hält 0, dann -
Beispiele anzeigen
Operator | Beschreibung | Beispiel |
---|---|---|
&& | Es heißt logischer UND-Operator. Wenn beide Operanden ungleich Null sind, wird die Bedingung wahr. | (A && B) ist falsch. |
|| | Es heißt logischer ODER-Operator. Wenn einer der beiden Operanden ungleich Null ist, wird die Bedingung wahr. | (A || B) ist wahr. |
! | Es heißt Logical NOT Operator. Verwenden Sie diese Option, um den logischen Status des Operanden umzukehren. Wenn eine Bedingung wahr ist, macht der Operator Logical NOT false. | ! (A && B) ist wahr. |
Bitweise Operatoren
Bitweise Operatoren arbeiten mit Bits und führen eine bitweise Operation durch. Die Wahrheitstabellen für &, | und ^ lauten wie folgt:
p | q | p & q | p | q | p ^ q |
---|---|---|---|---|
0 | 0 | 0 | 0 | 0 |
0 | 1 | 0 | 1 | 1 |
1 | 1 | 1 | 1 | 0 |
1 | 0 | 0 | 1 | 1 |
Angenommen, A = 60; und B = 13. Im Binärformat sind sie wie folgt:
A = 0011 1100
B = 0000 1101
-----------------
A & B = 0000 1100
A | B = 0011 1101
A ^ B = 0011 0001
~ A = 1100 0011
Die von der Sprache D unterstützten bitweisen Operatoren sind in der folgenden Tabelle aufgeführt. Angenommen, Variable A hält 60 und Variable B hält 13, dann -
Beispiele anzeigen
Operator | Beschreibung | Beispiel |
---|---|---|
& | Der binäre UND-Operator kopiert ein Bit in das Ergebnis, wenn es in beiden Operanden vorhanden ist. | (A & B) ergibt 12, bedeutet 0000 1100. |
| | Der binäre ODER-Operator kopiert ein Bit, wenn es in einem der Operanden vorhanden ist. | (A | B) ergibt 61. Mittel 0011 1101. |
^ | Der binäre XOR-Operator kopiert das Bit, wenn es in einem Operanden gesetzt ist, aber nicht in beiden. | (A ^ B) ergibt 49. Mittel 0011 0001 |
~ | Der Komplementoperator für binäre Einsen ist unär und bewirkt das Umdrehen von Bits. | (~ A) ergibt -61. Bedeutet 1100 0011 in 2er-Komplementform. |
<< | Binärer Linksschaltoperator. Der Wert der linken Operanden wird um die vom rechten Operanden angegebene Anzahl von Bits nach links verschoben. | A << 2 ergibt 240. Bedeutet 1111 0000 |
>> | Binärer Rechtsschieber. Der Wert der linken Operanden wird um die vom rechten Operanden angegebene Anzahl von Bits nach rechts verschoben. | A >> 2 geben 15. Bedeutet 0000 1111. |
Zuweisungsoperatoren
Die folgenden Zuweisungsoperatoren werden von der Sprache D unterstützt:
Beispiele anzeigen
Operator | Beschreibung | Beispiel |
---|---|---|
= | Es ist ein einfacher Zuweisungsoperator. Es weist dem linken Operanden Werte von Operanden auf der rechten Seite zu | C = A + B weist C den Wert von A + B zu |
+ = | Es ist ein Add-AND-Zuweisungsoperator. Es fügt dem linken Operanden den rechten Operanden hinzu und weist das Ergebnis dem linken Operanden zu | C + = A entspricht C = C + A. |
- = | Es ist ein Subtraktions- UND Zuweisungsoperator. Es subtrahiert den rechten Operanden vom linken Operanden und weist das Ergebnis dem linken Operanden zu. | C - = A entspricht C = C - A. |
* = | Es ist ein Multiplikations- UND Zuweisungsoperator. Es multipliziert den rechten Operanden mit dem linken Operanden und weist das Ergebnis dem linken Operanden zu. | C * = A entspricht C = C * A. |
/ = | Es ist ein Divisions- UND Zuweisungsoperator. Es teilt den linken Operanden mit dem rechten Operanden und weist das Ergebnis dem linken Operanden zu. | C / = A entspricht C = C / A. |
% = | Es ist ein Modul- UND Zuweisungsoperator. Es nimmt den Modul mit zwei Operanden und ordnet das Ergebnis dem linken Operanden zu. | C% = A entspricht C = C% A. |
<< = | Es ist Linksverschiebung UND Zuweisungsoperator. | C << = 2 ist dasselbe wie C = C << 2 |
>> = | Es ist Rechtsverschiebung UND Zuweisungsoperator. | C >> = 2 ist dasselbe wie C = C >> 2 |
& = | Es ist ein bitweiser UND-Zuweisungsoperator. | C & = 2 ist dasselbe wie C = C & 2 |
^ = | Es ist ein bitweise exklusiver ODER- und Zuweisungsoperator. | C ^ = 2 ist dasselbe wie C = C ^ 2 |
| = | Es ist bitweise inklusive ODER- und Zuweisungsoperator | C | = 2 ist dasselbe wie C = C | 2 |
Verschiedene Operatoren - Sizeof und Ternary
Es gibt nur wenige andere wichtige Betreiber, einschließlich sizeof und ? : unterstützt von D Language.
Beispiele anzeigen
Operator | Beschreibung | Beispiel |
---|---|---|
Größe von() | Gibt die Größe einer Variablen zurück. | sizeof (a), wobei a eine ganze Zahl ist, gibt 4 zurück. |
& | Gibt die Adresse einer Variablen zurück. | &ein; gibt die tatsächliche Adresse der Variablen an. |
* * | Zeiger auf eine Variable. | *ein; gibt einen Zeiger auf eine Variable. |
? :: | Bedingter Ausdruck | Wenn die Bedingung erfüllt ist, dann Wert X: Andernfalls Wert Y. |
Vorrang der Operatoren in D.
Die Operatorrangfolge bestimmt die Gruppierung von Begriffen in einem Ausdruck. Dies wirkt sich darauf aus, wie ein Ausdruck ausgewertet wird. Bestimmte Operatoren haben Vorrang vor anderen.
Beispielsweise hat der Multiplikationsoperator eine höhere Priorität als der Additionsoperator.
Betrachten wir einen Ausdruck
x = 7 + 3 * 2.
Hier wird x 13 zugewiesen, nicht 20. Der einfache Grund ist, dass der Operator * eine höhere Priorität als + hat, daher wird zuerst 3 * 2 berechnet und dann das Ergebnis zu 7 addiert.
Hier werden Operatoren mit der höchsten Priorität oben in der Tabelle angezeigt, Operatoren mit der niedrigsten Priorität unten. Innerhalb eines Ausdrucks werden zuerst Operatoren mit höherer Priorität ausgewertet.
Beispiele anzeigen
Kategorie | Operator | Assoziativität |
---|---|---|
Postfix | () [] ->. ++ - - | Links nach rechts |
Einstellig | + -! ~ ++ - - (Typ) * & sizeof | Rechts nach links |
Multiplikativ | * /% | Links nach rechts |
Zusatzstoff | + - | Links nach rechts |
Verschiebung | << >> | Links nach rechts |
Relational | << = >>> = | Links nach rechts |
Gleichberechtigung | ==! = | Links nach rechts |
Bitweises UND | & | Links nach rechts |
Bitweises XOR | ^ | Links nach rechts |
Bitweises ODER | | | Links nach rechts |
Logisches UND | && | Links nach rechts |
Logisches ODER | || | Links nach rechts |
Bedingt | ?: | Rechts nach links |
Zuordnung | = + = - = * = / =% = >> = << = & = ^ = | = | Rechts nach links |
Komma | , | Links nach rechts |