Uitgebreide Gids voor C++ Operators: Types, Gebruik en Best Practices
Een operator is een symbool dat de compiler vertelt om specifieke wiskundige of logische manipulaties uit te voeren. C++ is rijk aan ingebouwde operators en biedt de volgende typen operators:
- Rekenkundige Operators (Arithmetic Operators)
- Relationele Operators (Relational Operators)
- Logische Operators (Logical Operators)
- Bitwise Operators
- Toewijzingsoperators (Assignment Operators)
- Diverse Operators (Misc Operators)
Dit hoofdstuk onderzoekt de rekenkundige, relationele, logische, bitwise, toewijzings- en andere operators één voor één.
Rekenkundige Operators
De volgende rekenkundige operators worden ondersteund door C++:
Neem aan dat variabele A 10 bevat en variabele B 20, dan:
Voorbeelden tonen
| Operator | Beschrijving | Voorbeeld |
|---|---|---|
| + | Tel twee operanden op | A + B geeft 30 |
| - | Trek tweede operand van de eerste af | A - B geeft -10 |
| * | Vermenigvuldig beide operanden | A * B geeft 200 |
| / | Deel teller door noemer | B / A geeft 2 |
| % | Modulus operator en rest na gehele deling | B % A geeft 0 |
| ++ | Increment operator, verhoogt integer waarde met één | A++ geeft 11 |
| -- | Decrement operator, verlaagt integer waarde met één | A-- geeft 9 |
Relationele Operators
De volgende relationele operators worden ondersteund door C++:
Neem aan dat variabele A 10 bevat en variabele B 20, dan:
Voorbeelden tonen
| Operator | Beschrijving | Voorbeeld |
|---|---|---|
| == | Controleert of de waarden van twee operanden gelijk zijn, zo ja dan wordt de voorwaarde true. | (A == B) is niet true. |
| != | Controleert of de waarden van twee operanden gelijk zijn, als waarden niet gelijk zijn wordt de voorwaarde true. | (A != B) is true. |
| > | Controleert of de waarde van de linkse operand groter is dan de rechter operand, zo ja dan wordt de voorwaarde true. | (A > B) is niet true. |
| < | Controleert of de waarde van de linkse operand kleiner is dan de rechter operand, zo ja dan wordt de voorwaarde true. | (A < B) is true. |
| >= | Controleert of de waarde van de linkse operand groter of gelijk is aan de rechter operand, zo ja dan wordt de voorwaarde true. | (A >= B) is niet true. |
| <= | Controleert of de waarde van de linkse operand kleiner of gelijk is aan de rechter operand, zo ja dan wordt de voorwaarde true. | (A <= B) is true. |
Logische Operators
De volgende logische operators worden ondersteund door C++:
Neem aan dat variabele A 1 bevat en variabele B 0, dan:
Voorbeelden tonen
| Operator | Beschrijving | Voorbeeld |
|---|---|---|
| && | Logical AND operator. Als beide operanden non-zero zijn, wordt de voorwaarde true. | (A && B) is false. |
| || | Logical OR Operator. Als een van de twee operanden non-zero is, wordt de voorwaarde true. | (A || B) is true. |
| ! | Logical NOT Operator. Keert de logische staat van de operand om. Als een voorwaarde true is, maakt Logical NOT het false. | !(A && B) is true. |
Bitwise Operators
Bitwise operator werkt op bits en voert bit-voor-bit operaties uit. De waarheidstabellen voor &, |, en ^ zijn als volgt:
| 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 |
Neem aan A = 60; en B = 13; nu in binair formaat zullen ze als volgt zijn:
A = 0011 1100
B = 0000 1101
-----------------
A&B = 0000 1100
A|B = 0011 1101
A^B = 0011 0001
~A = 1100 0011
De Bitwise operators ondersteund door C++ zijn in de volgende tabel vermeld. Neem aan variabele A bevat 60 en variabele B bevat 13, dan:
Voorbeelden tonen
| Operator | Beschrijving | Voorbeeld |
|---|---|---|
| & | Binary AND Operator kopieert een bit naar het resultaat als het in beide operanden bestaat. | (A & B) geeft 12 wat 0000 1100 is |
| | | Binary OR Operator kopieert een bit als het in één van de operanden bestaat. | (A | B) geeft 61 wat 0011 1101 is |
| ^ | Binary XOR Operator kopieert de bit als het in één operand gezet is maar niet in beide. | (A ^ B) geeft 49 wat 0011 0001 is |
| ~ | Binary Ones Complement Operator is unair en heeft het effect van 'omkeren' van bits. | (~A) geeft -61 wat 1100 0011 is in 2's complement vorm door een gesigneerd binair getal. |
| << | Binary Left Shift Operator. De waarde van de linkse operand wordt naar links verschoven met het aantal bits gespecificeerd door de rechter operand. | A << 2 geeft 240 wat 1111 0000 is |
| >> | Binary Right Shift Operator. De waarde van de linkse operand wordt naar rechts verschoven met het aantal bits gespecificeerd door de rechter operand. | A >> 2 geeft 15 wat 0000 1111 is |
Toewijzingsoperators (Assignment Operators)
De volgende toewijzingsoperators worden ondersteund door C++:
Voorbeelden tonen
| Operator | Beschrijving | Voorbeeld |
|---|---|---|
| = | Eenvoudige toewijzingsoperator, wijst waarden van rechter operanden toe aan linkse operand. | C = A + B wijst waarde van A + B toe aan C |
| += | Optel EN toewijzingsoperator, telt rechter operand op bij linkse operand en wijst resultaat toe aan linkse operand. | C += A is equivalent aan C = C + A |
| -= | Aftrek EN toewijzingsoperator, trekt rechter operand af van linkse operand en wijst resultaat toe aan linkse operand. | C -= A is equivalent aan C = C - A |
| *= | Vermenigvuldig EN toewijzingsoperator, vermenigvuldigt rechter operand met linkse operand en wijst resultaat toe aan linkse operand. | C *= A is equivalent aan C = C * A |
| /= | Deel EN toewijzingsoperator, deelt linkse operand door rechter operand en wijst resultaat toe aan linkse operand. | C /= A is equivalent aan C = C / A |
| %= | Modulus EN toewijzingsoperator, neemt modulus met twee operanden en wijst resultaat toe aan linkse operand. | C %= A is equivalent aan C = C % A |
| <<= | Linksshift EN toewijzingsoperator. | C <<= 2 is hetzelfde als C = C << 2 |
| >>= | Rechtshift EN toewijzingsoperator. | C >>= 2 is hetzelfde als C = C >> 2 |
| &= | Bitwise AND toewijzingsoperator. | C &= 2 is hetzelfde als C = C & 2 |
| ^= | Bitwise exclusive OR en toewijzingsoperator. | C ^= 2 is hetzelfde als C = C ^ 2 |
| |= | Bitwise inclusive OR en toewijzingsoperator. | C |= 2 is hetzelfde als C = C | 2 |
Diverse Operators (Misc Operators)
De volgende tabel bevat enkele andere operators die C++ ondersteunt.
| Nr. | Operator & Beschrijving |
|---|---|
| 1 | sizeof sizeof operator retourneert de grootte van een variabele. Bijvoorbeeld, sizeof(a), waar 'a' integer is, retourneert 4. |
| 2 | Condition ? X : Y Conditionele operator (?). Als Condition true is, retourneert het de waarde van X, anders de waarde van Y. |
| 3 | , Comma operator zorgt voor een reeks operaties die uitgevoerd worden. De waarde van de gehele comma-expressie is de waarde van de laatste expressie van de comma-gescheiden lijst. |
| 4 | . (dot) en -> (arrow) Member operators worden gebruikt om individuele leden van klassen, structuren, en unions te refereren. |
| 5 | Cast Casting operators converteren één datatype naar een ander. Bijvoorbeeld, int(2.2000) zou 2 retourneren. |
| 6 | & Pointer operator & retourneert het adres van een variabele. Bijvoorbeeld &a; geeft het daadwerkelijke adres van de variabele. |
| 7 | * Pointer operator * is pointer naar een variabele. Bijvoorbeeld *var; is pointer naar variabele var. |
Operator Precedentie in C++
Operator precedentie bepaalt de groepering van termen in een expressie. Dit beïnvloedt hoe een expressie geëvalueerd wordt. Bepaalde operators hebben hogere precedentie dan andere; bijvoorbeeld, de vermenigvuldigingsoperator heeft hogere precedentie dan de opteloperator:
Bijvoorbeeld x = 7 + 3 * 2; hier wordt x 13 toegewezen, niet 20, omdat operator * hogere precedentie heeft dan +, dus wordt het eerst vermenigvuldigd met 3*2 en dan opgeteld bij 7.
Hier staan operators met de hoogste precedentie bovenaan de tabel, die met de laagste onderaan. Binnen een expressie worden hogere precedentie operators eerst geëvalueerd.
Voorbeelden tonen
| Categorie | Operator | Associativiteit |
|---|---|---|
| Postfix | () [] -> . ++ - - | Linker naar rechter |
| Unair | + - ! ~ ++ - - (type)* & sizeof | Rechter naar linker |
| Multiplicatief | * / % | Linker naar rechter |
| Additief | + - | Linker naar rechter |
| Shift | << >> | Linker naar rechter |
| Relationeel | < <= > >= | Linker naar rechter |
| Gelijkheid | == != | Linker naar rechter |
| Bitwise AND | & | Linker naar rechter |
| Bitwise XOR | ^ | Linker naar rechter |
| Bitwise OR | | | Linker naar rechter |
| Logical AND | && | Linker naar rechter |
| Logical OR | || | Linker naar rechter |
| Conditioneel | ?: | Rechter naar linker |
| Toewijzing | = += -= *= /= %= >>= <<= &= ^= |= | Rechter naar linker |
| Comma | , | Linker naar rechter |
C Taal
- C# Operators – Uitgebreide gids voor operators in C#
- C++ datatypes begrijpen: fundamentals, modifiers en best practices
- C++ operators: complete gids met praktische voorbeelden
- C++ comments: best practices voor leesbare, onderhoudbare code
- C++ Class Templates Beheersen: Een Praktische Gids
- C Programmeeroperatoren Beheersen: Een Uitgebreide Gids
- C++ Operators Uitgelegd: Typen, Voorbeelden en Voorbeeldprogramma's
- C-operators: Types, functies en voorbeelden
- C++ Programmeertaal: Overzicht & Belangrijkste Kenmerken
- Python Operators onder de knie krijgen: Een uitgebreide gids
- Java-operators beheersen: typen, syntax en praktische voorbeelden