C Operatoren
Ein Operator ist ein Symbol, das den Compiler anweist, bestimmte mathematische oder logische Operationen auszuführen. Die Sprache C verfügt über einen reichen Satz integrierter Operatoren und bietet die folgenden Operatortypen:
- Arithmetische Operatoren
- Relationale Operatoren
- Logische Operatoren
- Bitweise Operatoren
- Zuweisungsoperatoren
- Sonstige Operatoren
In diesem Kapitel werden arithmetische Operatoren, relationale Operatoren, logische Operatoren, bitweise Operatoren, Zuweisungsoperatoren und andere Operatoren nacheinander vorgestellt.
Arithmetische Operatoren
Die folgende Tabelle zeigt alle von der Sprache C unterstützten arithmetischen Operatoren. Angenommen, VariableAhat den Wert 10, VariableBhat den Wert 20, dann:
| Operatoren | Beschreibung | Beispiel |
|---|---|---|
| + | Addiert zwei Operanden. | A + B ergibt 30 |
| - | Subtrahiert den zweiten Operanden vom ersten Operanden. | A - B ergibt -10 |
| * | Multipliziert zwei Operanden. | A * B ergibt 200 |
| / | Zähler geteilt durch Nenner | B / A ergibt 2 |
| % | Modulo-Operator, der Rest nach der ganzzahligen Division. | B % A ergibt 0 |
| ++ | Inkrementoperator, erhöht den ganzzahligen Wert um 1. | A++ ergibt 11 |
| -- | Dekrementoperator, verringert den ganzzahligen Wert um 1. | A-- ergibt 9 |
Beispiel
Siehe das folgende Beispiel, um alle verfügbaren arithmetischen Operatoren in C kennenzulernen:
Beispiel
Wenn der obige Code kompiliert und ausgeführt wird, erzeugt er das folgende Ergebnis:
Line 1 - c 的值是 31 Line 2 - c 的值是 11 Line 3 - c 的值是 210 Line 4 - c 的值是 2 Line 5 - c 的值是 1 Line 6 - c 的值是 21 Line 7 - c 的值是 22
Das folgende Beispiel zeigt den Unterschied zwischen a++ und ++a:
Beispiel
Die Ausgabe der obigen Programmausführung ist:
先赋值后运算: Line 1 - c 的值是 10 Line 2 - a 的值是 11 Line 3 - c 的值是 10 Line 4 - a 的值是 9 先运算后赋值: Line 5 - c 的值是 11 Line 6 - a 的值是 11 Line 7 - c 的值是 9 Line 8 - a 的值是 9
Relationale Operatoren
Die folgende Tabelle zeigt alle von der Sprache C unterstützten relationalen Operatoren. Angenommen, VariableAhat den Wert 10, VariableBhat den Wert 20, dann:
| Operatoren | Beschreibung | Beispiel |
|---|---|---|
| == | Prüft, ob die Werte zweier Operanden gleich sind. Wenn sie gleich sind, ist die Bedingung wahr. | (A == B) ist falsch. |
| != | Prüft, ob die Werte zweier Operanden gleich sind. Wenn sie nicht gleich sind, ist die Bedingung wahr. | (A != B) ist wahr. |
| > | Prüft, ob der Wert des linken Operanden größer als der Wert des rechten Operanden ist. Wenn ja, ist die Bedingung wahr. | (A > B) ist falsch. |
| < | Prüft, ob der Wert des linken Operanden kleiner als der Wert des rechten Operanden ist. Wenn ja, ist die Bedingung wahr. | (A < B) ist wahr. |
| >= | Prüft, ob der Wert des linken Operanden größer als oder gleich dem Wert des rechten Operanden ist. Wenn ja, ist die Bedingung wahr. | (A >= B) ist falsch. |
| <= | Prüft, ob der Wert des linken Operanden kleiner als oder gleich dem Wert des rechten Operanden ist. Wenn ja, ist die Bedingung wahr. | (A <= B) ist wahr. |
Beispiel
Siehe das folgende Beispiel, um alle verfügbaren relationalen Operatoren in C kennenzulernen:
Beispiel
Wenn der obige Code kompiliert und ausgeführt wird, erzeugt er das folgende Ergebnis:
Line 1 - a 不等于 b Line 2 - a 不小于 b Line 3 - a 大于 b Line 4 - a 小于或等于 b Line 5 - b 大于或等于 a
Logische Operatoren
Die folgende Tabelle zeigt alle relationalen und logischen Operatoren, die von der Sprache C unterstützt werden. Angenommen, VariableAhat den Wert 1, VariableBhat den Wert 0, dann:
| Operatoren | Beschreibung | Beispiel |
|---|---|---|
| && | Wird als logischer AND-Operator bezeichnet. Wenn beide Operanden ungleich null sind, ist die Bedingung wahr. | (A && B) ist falsch. |
| || | Wird als logischer OR-Operator bezeichnet. Wenn einer der beiden Operanden ungleich null ist, ist die Bedingung wahr. | (A || B) ist wahr. |
| ! | Wird als logischer NOT-Operator bezeichnet. Er wird verwendet, um den logischen Zustand eines Operanden umzukehren. Wenn eine Bedingung wahr ist, macht der logische NOT-Operator sie falsch. | !(A && B) ist wahr. |
Beispiel
Sehen Sie sich das folgende Beispiel an, um alle verfügbaren logischen Operatoren in C kennenzulernen:
Beispiel
Wenn der obige Code kompiliert und ausgeführt wird, erzeugt er das folgende Ergebnis:
Line 1 - 条件为真 Line 2 - 条件为真 Line 3 - 条件为假 Line 4 - 条件为真
Bitweise Operatoren
Bitweise Operatoren wirken auf Bits und führen Operationen Bit für Bit aus. Die Wahrheitstabellen von &, | und ^ sind 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. Nun im Binärformat dargestellt, 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 folgende Tabelle zeigt die von der Sprache C unterstützten bitweisen Operatoren. Angenommen, die VariableAhat den Wert 60, die VariableBhat den Wert 13, dann:
| Operatoren | Beschreibung | Beispiel |
|---|---|---|
| & | Führt eine logische UND-Operation für jedes Bit der beiden Operanden durch. Wenn beide entsprechenden Bits 1 sind, ist das Ergebnis 1; andernfalls ist es 0. Die bitweise UND-Operation führt die "UND"-Operation mit binären Bits durch. Die Regeln: 0&0=0; 0&1=0; 1&0=0; 1&1=1; | (A & B) ergibt 12, was 0000 1100 entspricht. |
| | | Führt eine logische ODER-Operation für jedes Bit der beiden Operanden durch. Wenn beide entsprechenden Bits 0 sind, ist das Ergebnis 0; andernfalls ist es 1. Der bitweise OR-Operator führt die "OR"-Operation auf binären Bits aus. Die Regeln: 0|0=0; 0|1=1; 1|0=1; 1|1=1; | (A | B) ergibt 61, was 0011 1101 entspricht. |
| ^ | Führt eine logische XOR-Operation für jedes Bit der beiden Operanden aus. Wenn die beiden entsprechenden Bitwerte gleich sind, ist das Ergebnis 0; andernfalls ist es 1. Der XOR-Operator führt die "XOR"-Operation auf binären Bits aus. Die Regeln: 0^0=0; 0^1=1; 1^0=1; 1^1=0; | (A ^ B) ergibt 49, was 0011 0001 ist. |
| ~ | Führt eine logische Negation für jedes Bit des Operanden aus, das heißt, ändert jede 0 in 1 und jede 1 in 0. Der bitweise NOT-Operator führt die "NOT"-Operation auf binären Bits aus. Die Regeln: ~1=-2; ~0=-1; | (~A ) ergibt -61, was 1100 0011 ist, die Zweierkomplementform einer vorzeichenbehafteten Binärzahl. |
| << | Verschiebt alle Bits des Operanden um die angegebene Anzahl von Bits nach links. Eine Verschiebung um n Bits nach links entspricht einer Multiplikation mit 2 hoch n. Binärer Linksverschiebungsoperator. Verschiebt alle binären Bits eines Operanden um eine bestimmte Anzahl von Bits nach links (die am weitesten links stehenden binären Bits werden verworfen, und rechts werden Nullen aufgefüllt). | A << 2 ergibt 240, was 1111 0000 ist. |
| >> | Verschiebt alle Bits des Operanden um die angegebene Anzahl von Bits nach rechts. Eine Verschiebung um n Bits nach rechts entspricht einer Division durch 2 hoch n. Binärer Rechtsverschiebungsoperator. Verschiebt alle binären Bits einer Zahl um eine bestimmte Anzahl von Bits nach rechts. Bei positiven Zahlen werden links Nullen aufgefüllt; bei negativen Zahlen werden links Einsen aufgefüllt; die am weitesten rechts stehenden Bits werden verworfen. | A >> 2 ergibt 15, was 0000 1111 ist. |
Beispiel
Siehe das folgende Beispiel, um alle verfügbaren bitweisen Operatoren in C kennenzulernen:
Beispiel
Wenn der obige Code kompiliert und ausgeführt wird, erzeugt er das folgende Ergebnis:
Line 1 - c 的值是 12 Line 2 - c 的值是 61 Line 3 - c 的值是 49 Line 4 - c 的值是 -61 Line 5 - c 的值是 240 Line 6 - c 的值是 15
Zuweisungsoperatoren
Die folgende Tabelle listet die von der Sprache C unterstützten Zuweisungsoperatoren auf:
| Operatoren | Beschreibung | Beispiel |
|---|---|---|
| = | Einfacher Zuweisungsoperator, weist dem linken Operanden den Wert des rechten Operanden zu. | C = A + B weist C den Wert von A + B zu |
| += | Additions- und Zuweisungsoperator: addiert den rechten Operanden zum linken Operanden und weist das Ergebnis dem linken Operanden zu. | C += A ist äquivalent zu C = C + A. |
| -= | Subtraktions- und Zuweisungsoperator: subtrahiert den rechten Operanden vom linken Operanden und weist das Ergebnis dem linken Operanden zu. | C -= A ist äquivalent zu C = C - A. |
| *= | Multiplikations- und Zuweisungsoperator: multipliziert den linken Operanden mit dem rechten Operanden und weist das Ergebnis dem linken Operanden zu. | C *= A ist äquivalent zu C = C * A. |
| /= | Divisions- und Zuweisungsoperator: dividiert den linken Operanden durch den rechten Operanden und weist das Ergebnis dem linken Operanden zu. | C /= A ist äquivalent zu C = C / A. |
| %= | Modulus- und Zuweisungsoperator, nimmt den Modulus zweier Operanden und weist ihn dem linken Operanden zu. | C %= A ist äquivalent zu C = C % A. |
| <<= | Linksverschiebungs- und Zuweisungsoperator. | C <<= 2 ist äquivalent zu C = C << 2. |
| >>= | Rechtsverschiebungs- und Zuweisungsoperator. | C >>= 2 ist äquivalent zu C = C >> 2. |
| &= | Bitweiser AND- und Zuweisungsoperator. | C &= 2 ist äquivalent zu C = C & 2. |
| ^= | Bitweiser XOR- und Zuweisungsoperator. | C ^= 2 ist äquivalent zu C = C ^ 2 |
| |= | Bitweiser OR- und Zuweisungsoperator. | C |= 2 ist äquivalent zu C = C | 2 |
Beispiel
Im folgenden Beispiel lernen Sie alle in C verfügbaren Zuweisungsoperatoren kennen:
Beispiel
Wenn der obige Code kompiliert und ausgeführt wird, erzeugt er das folgende Ergebnis:
Line 1 - = 运算符实例,c 的值 = 21 Line 2 - += 运算符实例,c 的值 = 42 Line 3 - -= 运算符实例,c 的值 = 21 Line 4 - *= 运算符实例,c 的值 = 441 Line 5 - /= 运算符实例,c 的值 = 21 Line 6 - %= 运算符实例,c 的值 = 11 Line 7 - <<= 运算符实例,c 的值 = 44 Line 8 - >>= 运算符实例,c 的值 = 11 Line 9 - &= 运算符实例,c 的值 = 2 Line 10 - ^= 运算符实例,c 的值 = 0 Line 11 - |= 运算符实例,c 的值 = 2
Sonstige Operatoren ↦ sizeof & ternär
Die folgende Tabelle listet einige andere wichtige Operatoren auf, die von der Programmiersprache C unterstützt werden, einschließlichsizeofund? :。
| Operatoren | Beschreibung | Beispiel |
|---|---|---|
| sizeof() | Gibt die Größe einer Variablen zurück. | sizeof(a) gibt 4 zurück, wobei a eine Ganzzahl ist. |
| & | Gibt die Adresse einer Variablen zurück. | &a; gibt die tatsächliche Adresse der Variablen an. |
| * | Zeigt auf eine Variable. | *a; zeigt auf eine Variable. |
| ? : | Bedingter Ausdruck | Wenn die Bedingung wahr ist ? dann Wert X : andernfalls Wert Y |
Beispiel
Siehe das folgende Beispiel, um alle verfügbaren sonstigen Operatoren in C kennenzulernen:
Beispiel
Wenn der obige Code kompiliert und ausgeführt wird, erzeugt er das folgende Ergebnis:
Line 1 - 变量 a 的大小 = 4 Line 2 - 变量 b 的大小 = 2 Line 3 - 变量 c 的大小 = 8 a 的值是 4 *ptr 是 4 b 的值是 30 b 的值是 20
Operatorrangfolge in C
Die Operatorrangfolge bestimmt die Gruppierung von Termen in einem Ausdruck. Dies beeinflusst, wie ein Ausdruck ausgewertet wird. Bestimmte Operatoren haben einen höheren Vorrang als andere; zum Beispiel haben Multiplikations- und Divisionsoperatoren einen höheren Vorrang als Additions- und Subtraktionsoperatoren.
Zum Beispiel x = 7 + 3 * 2. Hier wird x der Wert 13 zugewiesen, nicht 20, weil der Operator * eine höhere Rangfolge als + hat, also wird zuerst die Multiplikation 3*2 berechnet und dann 7 addiert.
Die folgende Tabelle listet Operatoren in der Reihenfolge ihres Vorrangs von höchstem zu niedrigstem auf. Operatoren mit höherem Vorrang erscheinen oben in der Tabelle, und Operatoren mit niedrigerem Vorrang erscheinen unten. In einem Ausdruck werden Operatoren mit höherem Vorrang zuerst ausgewertet.
| Kategorie | Operatoren | Assoziativität |
|---|---|---|
| Postfix | () [] -> . ++ - - | Von links nach rechts |
| Unär | + - ! ~ ++ - - (type)* & sizeof | Von rechts nach links |
| Multiplikativ | * / % | Von links nach rechts |
| Additiv | + - | Von links nach rechts |
| Verschiebung | << >> | Von links nach rechts |
| Beziehung | < <= > >= | Von links nach rechts |
| Gleichheit | == != | Von links nach rechts |
| Bitweises AND | & | Von links nach rechts |
| Bitweises XOR | ^ | Von links nach rechts |
| Bitweises OR | | | Von links nach rechts |
| Logisches AND | && | Von links nach rechts |
| Logisches OR | || | Von links nach rechts |
| Bedingungen | ?: | Von rechts nach links |
| Zuweisung | = += -= *= /= %=>>= <<= &= ^= |= | Von rechts nach links |
| comma | , | Von links nach rechts |
Beispiel
Siehe das folgende Beispiel, um die Rangfolge der Operatoren in C zu verstehen:
Beispiel
Wenn der obige Code kompiliert und ausgeführt wird, erzeugt er das folgende Ergebnis:
(a + b) * c / d 的值是 90 ((a + b) * c) / d 的值是 90 (a + b) * (c / d) 的值是 90 a + (b * c) / d 的值是 50Weitere Erweiterungen