Umfassender Leitfaden zu C-Operatoren: Typen, Funktionen & Beispiele
Ein Operator ist ein Symbol, das dem Compiler anweist, bestimmte mathematische oder logische Funktionen auszuführen. C ist reich an eingebauten Operatoren und bietet folgende Typen:
- Arithmetische Operatoren
- Relationale Operatoren
- Logische Operatoren
- Bitweise Operatoren
- Zuweisungsoperatoren
- Sonstige Operatoren
Arithmetische Operatoren
Angenommen Variable A enthält 10 und Variable B enthält 20:
| Operator | Beschreibung | Beispiel |
|---|---|---|
| + | Addiert zwei Operanden. | A + B = 30 |
| - | Subtrahiert zweiten Operanden vom ersten. | A - B = -10 |
| * | Multipliziert beide Operanden. | A * B = 200 |
| / | Dividiert Zähler durch Nenner. | B / A = 2 |
| % | Modulo-Operator, Rest nach ganzzahliger Division. | B % A = 0 |
| ++ | Inkrement-Operator erhöht ganzzahligen Wert um 1. | A++ = 11 |
| -- | Dekrement-Operator verringert ganzzahligen Wert um 1. | A-- = 9 |
Relationale Operatoren
Angenommen A = 10, B = 20:
| Operator | Beschreibung | Beispiel |
|---|---|---|
| == | Prüft Gleichheit. Wahr wenn gleich. | (A == B) ist falsch. |
| != | Prüft Ungleichheit. Wahr wenn ungleich. | (A != B) ist wahr. |
| > | Prüft ob linker Operand größer als rechter. | (A > B) ist falsch. |
| < | Prüft ob linker Operand kleiner als rechter. | (A < B) ist wahr. |
| >= | Prüft größer oder gleich. | (A >= B) ist falsch. |
| <= | Prüft kleiner oder gleich. | (A <= B) ist wahr. |
Logische Operatoren
Angenommen A = 1 (wahr), B = 0 (falsch):
| Operator | Beschreibung | Beispiel |
|---|---|---|
| && | Logisches UND. Wahr wenn beide Operanden ungleich 0. | (A && B) ist falsch. |
| || | Logisches ODER. Wahr wenn mindestens ein Operand ungleich 0. | (A || B) ist wahr. |
| ! | Logisches NICHT. Kehrt logischen Zustand um. | !(A && B) ist wahr. |
Bitweise Operatoren
Bitweise Operatoren arbeiten auf Bits und führen bitweise Operationen durch. Wahrheitstafeln für &, |, ^:
| 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 (0011 1100), B = 13 (0000 1101):
A & B = 0000 1100 (12)
A | B = 0011 1101 (61)
A ^ B = 0011 0001 (49)
~A = 1100 0011 (-61 vorzeichenbehaftet)
| Operator | Beschreibung | Beispiel |
|---|---|---|
| & | Binäres UND: Kopiert Bit wenn in beiden Operanden gesetzt. | (A & B) = 12 |
| | | Binäres ODER: Kopiert Bit wenn in einem Operanden gesetzt. | (A | B) = 61 |
| ^ | Binäres XOR: Kopiert Bit wenn in genau einem Operanden gesetzt. | (A ^ B) = 49 |
| ~ | Einerkomplement (Bit-NOT): Kehrt Bits um. | (~A) = -61 |
| << | Links-Shift: Verschiebt Bits nach links. | A << 2 = 240 |
| >> | Rechts-Shift: Verschiebt Bits nach rechts. | A >> 2 = 15 |
Zuweisungsoperatoren
| Operator | Beschreibung | Beispiel |
|---|---|---|
| = | Einfache Zuweisung. | C = A + B |
| += | Addieren und zuweisen. | C += A ≡ C = C + A |
| -= | Subtrahieren und zuweisen. | C -= A ≡ C = C - A |
| *= | Multiplizieren und zuweisen. | C *= A ≡ C = C * A |
| /= | Dividieren und zuweisen. | C /= A ≡ C = C / A |
| %= | Modulo und zuweisen. | C %= A ≡ C = C % A |
| <<= | Links-Shift und zuweisen. | C <<= 2 ≡ C = C << 2 |
| >>= | Rechts-Shift und zuweisen. | C >>= 2 ≡ C = C >> 2 |
| &= | Bitweises UND und zuweisen. | C &= 2 ≡ C = C & 2 |
| ^= | Bitweises XOR und zuweisen. | C ^= 2 ≡ C = C ^ 2 |
| |= | Bitweises ODER und zuweisen. | C |= 2 ≡ C = C | 2 |
Sonstige Operatoren: sizeof, &, *, ?:
| Operator | Beschreibung | Beispiel |
|---|---|---|
| sizeof() | Gibt Größe einer Variable in Bytes zurück. | sizeof(int) → 4 |
| & | Adressoperator: Gibt Adresse einer Variable zurück. | &a |
| * | Dereferenzierung: Zeiger auf Variable. | *ptr |
| ?: | Ternärer/Conditional Operator. |
Operator-Rangfolge (Precedence) in C
Die Rangfolge bestimmt die Gruppierung von Termen in einem Ausdruck. Operatoren mit höherer Rangfolge werden zuerst ausgewertet.
Beispiel: x = 7 + 3 * 2 → x wird 13 (nicht 20), da * höhere Rangfolge als + hat.
| Kategorie | Operator | Assoziativität |
|---|---|---|
| Postfix | () [] -> . ++ -- | Links nach rechts |
| Unär | + - ! ~ ++ -- (type)* & sizeof | Rechts nach links |
| Multiplikativ | * / % | Links nach rechts |
| Additiv | + - | Links nach rechts |
| Shift | << >> | Links nach rechts |
| Relational | < <= > >= | Links nach rechts |
| Gleichheit | == != | 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 |
| Zuweisung | = += -= *= /= %= >>= <<= &= ^= |= | Rechts nach links |
| Komma | , | Links nach rechts |
C Sprache
- C# Operatoren – Umfassender Leitfaden zu Operatoren in C#
- C# Bitweise und Bit-Shift-Operatoren meistern: Umfassender Leitfaden
- C++-Operatoren meistern: Ein vollständiger Leitfaden mit praktischen Beispielen
- C Programmierungsoperatoren meistern: Ein umfassender Leitfaden
- Python-Operatoren meistern: Umfassender Leitfaden
- Java Operatoren meistern: Typen, Syntax und praktische Beispiele
- Bitweise Operatoren in C meistern: AND, OR, XOR, Shifts & Komplement
- Verilog Operatoren: Arithmetik & Control für Synthese
- Java Grundlagen: Umfassender Leitfaden zu Kernoperatoren
- C++ Operatoren: Typen, Nutzung & Best Practices