c operators types
Een complete studie van operators in C ++ met voorbeelden:
In deze Intensieve C ++ Trainingsserie, we leerden over de verschillende concepten in C ++ zoals variabelen, opslagklassen, typekwalificaties, enz. in onze eerdere tutorials. We kwamen ook te weten hoe we deze variabelen kunnen wijzigen.
Om deze wijzigingen aan te brengen, moeten we bewerkingen uitvoeren op deze variabelen en constanten en om deze bewerkingen uit te voeren, maken we gebruik van operators.
Operatoren zijn symbolen die werken op variabelen of andere entiteiten die operanden worden genoemd en wiskundige of logische bewerkingen uitvoeren om hun waarden te wijzigen en dienovereenkomstig resultaten te produceren.
Wat je leert:
Operatoren in C ++
Operators vormen de basis van elke programmeertaal. Zonder operators kunnen we de entiteiten van programmeertalen niet wijzigen of manipuleren en kunnen we daardoor niet de gewenste resultaten produceren. C ++ is erg rijk aan ingebouwde operators die we in deze tutorial in detail zullen bespreken.
In C ++ zijn de meeste operators binaire operators, d.w.z. deze operators hebben twee operanden nodig om een bewerking uit te voeren. Er zijn maar weinig operators zoals de ++ (increment) operator zijn de unaire operator, wat betekent dat ze slechts op één operand werken.
Er is ook een ternaire operator in C ++ genaamd Conditional Operator die drie operanden nodig heeft. We zullen hier in detail over leren in het laatste deel van de tutorial.
Typen operators in C ++
Operators in C ++ zijn geclassificeerd zoals hieronder weergegeven:
Laten we elk type C ++ -operator in detail onderzoeken !!
Rekenkundige operatoren
Rekenkundige operatoren worden gebruikt voor het uitvoeren van elementaire wiskundige bewerkingen op operanden.
C ++ ondersteunt de volgende rekenkundige bewerkingen:
Operator | Binair / unair | Omschrijving |
---|---|---|
| Unair | Verlagingsoperator - verlaagt de waarde van operand met 1 |
| Binair | Toevoeging van twee operanden |
| Binair | Aftrekken van twee operanden |
| Binair | Vermenigvuldiging van twee operanden |
| Binair | Verdeling van twee operanden |
| Binair | Modulus-operator - het resultaat is de rest van de deling |
| Unair | Operator verhogen - verhoogt de waarde van operand met 1 |
Het onderstaande voorbeeld toont de eerste vijf rekenkundige operatoren in C ++
Uitgang:
Operanden zijn op1 = 3 op2 = 4 op3 = 10,1 op4 = 5,4
op1 + op2 = 7
op1 – op2 = -1
op3 * op4 = 54,54
op3 / op4 = 1.87037
op2 % op1 = 1
Het programma definieert eerst operanden en voert vervolgens rekenkundige bewerkingen uit op deze operanden. Dit programma demonstreert het gebruik van rekenkundige operatoren in C ++.
De volgende rekenkundige operatoren die we gaan bespreken zijn ++ en -. Dit worden respectievelijk verhogings- en verlagingsoperatoren genoemd. De increment-operator verhoogt de waarde van de operand met 1, terwijl de decrement-operator de waarde van de operand met 1 verlaagt.
De uitdrukking x ++ is gelijk aan
x + = 1;
x = x + 1;
Evenzo is de uitdrukking x — gelijk aan
x - = 1;
x = x-1;
De operatoren voor verhogen en verlagen kunnen zowel als voorvoegsel als als achtervoegsel voor de operand worden geplaatst. Afhankelijk van de plaatsing hebben deze operatoren een andere betekenis dan de evaluatie van een uitdrukking.
Indien geplaatst als een prefix, staat de verhogings- / verlagingsbewerking bekend als respectievelijk pre-increment of pre-decrement. Wanneer deze als achtervoegsel wordt geplaatst, wordt de ophogings- / verlagingsbewerking respectievelijk post-increment of post-decrement-bewerking genoemd.
Telkens wanneer er uitdrukkingen bij betrokken zijn, in het geval van pre-increment of pre-decrement, wordt eerst de bewerking (verhogen of verlagen) uitgevoerd en daarna is de toewijzing voltooid. In het geval van post-increment of post-decrement, wordt de toewijzing eerst gedaan en daarna wordt de bewerking uitgevoerd.
We kunnen dit beter begrijpen aan de hand van het volgende voorbeeld.
Uitgang:
PreIncrement: waarde van x = 5
PreIncrement: waarde van y = 5
PostDecrement: waarde van x = 4
PostDecrement: waarde van y = 5
Dit is het programma om de operators voor verhogen en verlagen te demonstreren. Merk op dat we in dit programma pre-increment en post-decrement operators hebben gebruikt. Voor de eerste uitdrukking, y = ++ x, aangezien dit pre-increment is, zal x eerst worden opgehoogd en vervolgens wordt de resulterende waarde toegewezen aan y. Dit blijkt uit de output die we hebben verkregen.
In de tweede uitdrukking y = x–, wordt de waarde van x die nu 5 is, eerst toegewezen aan y en daarna wordt de waarde van x verlaagd. Daarom kunnen we in de uitvoer zien dat voor de bewerking achteraf de waarde van y 5 is terwijl x 4 is.
Logische operators
Logische operatoren worden gebruikt voor het evalueren van een combinatie van voorwaarden / beperkingen om een resulterende waarde te krijgen. Het resultaat van de evaluatie van een Booleaanse uitdrukking is Boolean, wat waar of onwaar is.
C ++ ondersteunt de volgende logische operatoren:
Operator | Omschrijving | |
---|---|---|
7 L-> R | << | Bitsgewijs naar links verschuiven Bitsgewijs naar rechts verschuiven |
| Logisch EN: retourneert waar als beide voorwaarden waar zijn, anders wordt onwaar geretourneerd. | |
| Logische OF: retourneert waar als een van de voorwaarden waar is. Geeft false als beide voorwaarden false zijn. | |
| Logisch NIET: ontkent de voorwaarde. |
C ++ gebruikt een kortsluitingsmethode om logische uitdrukkingen te evalueren. Hierin hoeft C ++ alleen de eerste expressie / operand van de logische expressie te evalueren om het resultaat te leveren. Bijvoorbeeld, voor de logische operator AND (&&) evalueert C ++ alleen de eerste expressie. Als het onwaar is, is het resultaat onwaar, zelfs als de tweede voorwaarde waar is.
Evenzo evalueert het voor logische OR (||) alleen de eerste uitdrukking. Als de eerste uitdrukking waar is, dan is het resultaat waar, zodat de tweede uitdrukking niet geëvalueerd hoeft te worden.
Hieronder wordt een voorbeeld gegeven dat het gebruik van logische operatoren laat zien.
Uitgang:
a is niet nul
Logisch EN is waar
Logische OF is waar
In het bovenstaande programma hebben we gebruik gemaakt van alle drie de logische operatoren om uitdrukkingen te evalueren en de resultaten af te drukken.
Relationele operators
Relationele of vergelijkingsoperatoren worden gebruikt om twee operanden te vergelijken. Het resultaat van de evaluatie is waar of niet waar.
C ++ ondersteunt de volgende relationele operatoren:
Operator | Omschrijving |
---|---|
!FOUT! onverwachte operator '=' | Evalueert of twee operanden gelijk zijn. Geeft true terug als gelijk is anders false retourneert. |
! = (niet gelijk aan) | Vult de operator ‘gelijk aan’ aan. Geeft true terug als operanden niet gelijk zijn. Anders onjuist. |
<(less than) | Geeft true terug als de eerste operand kleiner is dan de seconde. Anders onjuist. |
<=(less than equal to) | Geeft true terug als de eerste operand kleiner is dan of gelijk is aan de tweede operand. Anders onjuist. |
> (groter dan) | Geeft true terug als de eerste operand groter is dan de tweede. Anders onjuist. |
> = (groter dan gelijk aan) | Geeft true terug als de eerste operand groter is dan gelijk aan de tweede. Anders onjuist. |
Zie het onderstaande voorbeeldprogramma om de relationele operatoren te begrijpen.
Uitgang:
a is niet gelijk aan b
c is niet gelijk aan d
(a + b) kleiner dan / gelijk aan (c + d)
(a-b) groter dan / gelijk aan (d-c)
In het bovenstaande programma zien we het gebruik van relationele operatoren en de manier waarop ze de aangeboden uitdrukkingen evalueren.
Merk op dat we niet alleen waarden maar ook variabelen en uitdrukkingen in de voorwaardelijke instructies kunnen geven.
Bitwise-operators
Bitwise-operators in C ++ werken op bits van de geboden operanden. Bitsgewijze operatoren worden alleen toegepast op integrale typen zoals integer, karakter, etc., en niet op gegevenstypen zoals float, double, etc.
Hieronder volgen de bitsgewijze operators die worden ondersteund door C ++:
Operatoren | Omschrijving |
---|---|
& (Binair EN) | Voert een EN-bewerking uit op bits van operand 1 en operand 2. |
| (Binair OF) | Voert OR-bewerking uit op bits van operand 1 en operand 2. |
^ (Binaire XOR) | Voert een XOR-bewerking uit op bits van operand 1 en operand 2. |
~ (Binaire zijn complement) | Neemt één operand en keert zijn bits om. |
<<( Binary left shift operator) | Verschuift bits van de eerste operand naar links naar een aantal bits dat is gespecificeerd door de tweede operand. |
>> (Binaire operator voor verschuiven naar rechts) | Verschuift bits van de eerste operand naar rechts naar een aantal plaatsen die zijn opgegeven door de tweede operand. |
Deze bitsgewijze operatoren werken bit voor bit op operanden. De waarheidstabellen voor AND-, OR- en XOR-bewerkingen worden hieronder gegeven.
Beschouw a en b als twee bits waarop EN-, OF- en XOR-bewerkingen moeten worden uitgevoerd.
De waarheidstabellen voor hetzelfde zijn zoals hieronder weergegeven:
naar | b | a & b | a | b | a ^ b |
---|---|---|---|---|
0 | 0 | 0 | 0 | 0 |
1 | 0 | 0 | 1 | 1 |
0 | 1 | 0 | 1 | 1 |
1 | 1 | 1 | 1 | 0 |
Laten we een voorbeeld nemen om Bitwise Operations te begrijpen.
Laat a = 8 en b = 4
De binaire weergave van a en b is als volgt:
a = 8 1000
a = 4 0100
a & b 0000 = 0
a | b 1100 = 12
a ^ b 1100 = 12
In het bovenstaande voorbeeld zien we dat de bitsgewijze EN van 8 en 4 gelijk is aan 0. Bitsgewijze OF van 8 en 4 is 12 en bitsgewijze XOR van 8 en 4 is ook 12.
Dit is de manier waarop bitsgewijze bewerkingen worden uitgevoerd door de bitsgewijze operatoren.
Een voorbeeld dat de Bitwise-operators demonstreert.
Uitgang:
Resultaat van &: 0
Resultaat van | : 12
Resultaat van ^: 12
Resultaat van<< by 2 bits: 32
Resultaat van >> met 2 bits: 1
Resultaat van ~: -4
In het bovenstaande programma hebben we het gebruik van bitsgewijze operators gedemonstreerd en ook de uitvoer van elk van de bewerkingen afgedrukt.
Toewijzingsoperatoren
Toewijzingsoperator “=” wordt gebruikt om een waarde aan een variabele toe te wijzen. De LHS van de toewijzingsoperator is een variabele en RHS is de waarde die aan de variabele moet worden toegewezen. De waarde aan de rechterkant moet van hetzelfde type zijn als die van de variabele aan de linkerkant.
Let op het verschil tussen ‘=’ en ‘==’ operators. De eerste is de toewijzingsoperator en de laatste is de gelijkheidsoperator.
De toewijzingsoperatie vindt plaats van rechts naar links. Behalve de toewijzingsoperator ‘=’ zijn er andere variaties op de toewijzingsoperator die bekend staat als ‘samengestelde toewijzingsoperatoren '. Deze operators voeren naast de opdracht een bewerking uit.
De onderstaande tabel geeft ons een beschrijving van deze toewijzingsoperatoren.
Operator | Omschrijving |
---|---|
| Wijst de waarde van de RHS-operand toe aan de LHS-operand |
| Voegt RHS-operand toe aan LHS-operand en wijst het resultaat toe in LHS-operand. |
| Trekt de RHS-operand af van de LHS-operand en wijst het resultaat toe aan de LHS-operand |
| vermenigvuldigt RHS-operand met LHS-operand en wijst het resultaat toe aan LHS-operand |
| verdeelt de RHS-operand in de LHS-operand en wijst het resultaat toe aan de LHS-operand |
Zoals weergegeven in de bovenstaande tabel, als x en y operanden zijn, is x + = y equivalent aan x = x + y.
Evenzo
x - = y is gelijk aan x = x-y.
x * = y is gelijk aan x = x * y.
x / = y is gelijk aan x = x / y.
Het onderstaande programmeervoorbeeld toont deze toewijzingsoperatoren.
Uitgang:
Voer invoervariabele y in: 4
Waarde van x = 4
a + = b: 8
c - = b: 3
a * = b: 40
b / = c: 1
In het bovenstaande voorbeeld hebben we zowel toewijzingsoperatoren als samengestelde toewijzingsoperatoren gedemonstreerd.
Notitie: We kunnen ook de andere binaire operatoren combineren, zoals%,<>, &, |, ^, etc. in samengestelde toewijzingsinstructies naast degene die al zijn gedemonstreerd.
Andere operators
Tot nu toe hebben we alle grote operators in C ++ onderzocht. Er zijn nog enkele extra C ++ - operators die onze aandacht nodig hebben.
Deze operators zijn onder meer:
wat is geen voorbeeld van datamining?
(i) grootte van de operator
sizeof is een unaire operator die veel wordt gebruikt in C en C ++. Sizeof retourneert de grootte van de operand. De geretourneerde waarde is meestal een niet-ondertekend integraal type, aangeduid met ‘size_t’.
De operator Sizeof heeft veel toepassingen in C- en C ++ - talen. Het kan worden gebruikt om de grootte van de variabelen, arrays of uitdrukkingen te achterhalen en zelfs om de geheugenblokken toe te wijzen.
(ii) Voorwaardelijke ternaire operator
De voorwaardelijke operator in C ++ kan worden gebruikt als vervanging voor de instructie if-else.
De algemene syntaxis voor de voorwaardelijke operator is:
Staat? expression1: expression2;
Als de voorwaarde waar is, wordt uitdrukking 1 geëvalueerd. Als de voorwaarde onwaar is, wordt expression2 geëvalueerd.
Houd er rekening mee dat expression1 en expression2 van dezelfde gegevenstypen moeten zijn om mogelijke fouten te voorkomen.
Voorgesteld lezen => Ternaire operator in C #
(iii) Comma Operator
Komma-operator die wordt weergegeven als een token ‘,’ kan zowel als operator als als scheidingsteken worden gebruikt.
Als operator wordt een komma gebruikt als er meer dan één uitdrukking moet worden geëvalueerd. Alleen de meest rechtse uitdrukking wordt aan LHS toegewezen.
Bijvoorbeeld,overweeg de volgende uitdrukking.
x = (y = 4, y + 1);
In deze uitdrukking hebben we twee uitdrukkingen aan de rechterkant, gescheiden door een komma. Hier fungeert een komma als een operator. Eerst wordt de uitdrukking y = 4 geëvalueerd. Vervolgens wordt de volgende uitdrukking y + 1 geëvalueerd door het resultaat van de eerste uitdrukking te gebruiken, d.w.z. y = 4. De waarde van y + 1 is dus 5 en deze waarde wordt toegewezen aan x.
Als scheidingsteken kan een komma overal worden gebruikt om definities, parameterlijsten, enz. Te scheiden.
(iv) Operator voor toegang voor leden
Er zijn twee operators die worden gebruikt om toegang te krijgen tot de individuele leden van klassen, structuren of vakbonden in C ++. Dit zijn de puntoperator (.) En de pijl (->) operator. We zullen deze operators in detail leren wanneer we objectgeoriënteerd programmeren in C ++ leren.
Het onderstaande voorbeeld toont het gebruik van sizeof, Comma en Conditional Operator.
Uitgang:
Waarde van x = 7
Variabele x is groter dan 5
sizeof (x): 4 sizeof (y): 4
Het screenshot voor hetzelfde wordt hieronder gegeven.
Zoals getoond in het bovenstaande programma, hebben we eerst twee variabelen gedeclareerd en gescheiden door een komma. (komma als scheidingsteken). Vervolgens hebben we een komma-operator met twee uitdrukkingen. Zoals we kunnen zien in de uitvoer, wordt de waarde van de meest rechtse uitdrukking toegewezen aan variabele x. Vervolgens demonstreren we de voorwaardelijke operator om te evalueren of x kleiner is dan 5.
Ten slotte demonstreren we het gebruik van de operator sizeof. Hier gebruiken we de operator sizeof om de grootte van de variabelen x en y te krijgen. Aangezien beide variabelen met gehele getallen zijn, is de geretourneerde grootte 4 bytes.
(v) Voorrang en associativiteit van operators
We hebben al bijna alle C ++ -operatoren gezien en we weten dat ze kunnen worden gebruikt in uitdrukkingen om specifieke bewerkingen uit te voeren. Maar de uitdrukkingen die we in voorbeelden hebben gezien, zijn eenvoudig en duidelijk. Afhankelijk van onze vereisten worden uitdrukkingen echter steeds complexer.
Dergelijke complexe uitdrukkingen hebben meer dan één operator en veel operanden. In een dergelijke situatie moeten we evalueren welke operator eerst moet worden geëvalueerd.
Bijvoorbeeld, overweeg dan de volgende uitdrukking.
x = 4 + 5/3;
Hier hebben we + en / operatoren en we moeten beslissen welke uitdrukking als eerste zal worden geëvalueerd. In wiskundige termen weten we dat de deling vóór de optelling zal plaatsvinden. De uitdrukking wordt dus x = 4 + (5/3) = 5.
Maar wanneer de compiler met een dergelijke situatie wordt geconfronteerd, hebben we ook een soortgelijk mechanisme nodig om de volgorde van bewerkingen te bepalen, zodat het de uitdrukking goed kan evalueren.
Deze volgorde waarin de operatoren in een samengestelde uitdrukking worden geëvalueerd, wordt de 'prioriteit' van de operator genoemd. C ++ heeft prioriteit gedefinieerd voor alle operators en de operators met een hogere prioriteit worden eerst geëvalueerd.
Wat gebeurt er als we twee operatoren naast elkaar hebben in een uitdrukking met dezelfde prioriteit? Dit is waar de associativiteit van een operator in beeld komt.
Associativiteit vertelt de compiler of een uitdrukking in de volgorde van links naar rechts of van rechts naar links moet worden geëvalueerd. Door dus voorrang en associativiteit van een operator te gebruiken, kunnen we een uitdrukking effectief evalueren en het gewenste resultaat krijgen.
C ++ biedt een tabel die bestaat uit voorrang en associativiteit van verschillende operators die het gebruikt.
Deze tabel wordt hieronder weergegeven.
Voorrang / associativiteit | Operator | Omschrijving |
---|---|---|
1 Geen | | Scope resolutie operator (unair) (binair) |
2 L-> R | type() type{} typeid const_cast dynamic_cast reinterpret_cast static_cast | Haakjes Functie-oproep Initialisatie Uniforme initialisatie (C ++ 11) Functionele cast Functionele cast (C ++ 11) Array-subscript Toegang voor leden vanaf het object Toegang voor leden vanaf object ptr Post-increment Post-decrement Run-time type informatie Gooi const Run-time type-gecontroleerde cast Cast het ene type naar het andere cast met compilatietijd |
3 R-> L | (type) De grootte van nieuw nieuw() verwijderen verwijder () | Unary meer Unair minpunt Pre-increment Voorverlaging Logisch NIET Bitsgewijs NIET C-stijl cast Grootte in bytes Adres van Dereferentie Dynamische geheugentoewijzing Dynamische array-toewijzing Dynamische geheugenverwijdering Dynamische verwijdering van array |
4 L-> R | | Ledenaanwijzerselector Objectselector voor leden |
5 L-> R | | Vermenigvuldiging Divisie Modulus |
6 L-> R | | Toevoeging Aftrekken |
8 L-> R | < <= | Vergelijking minder dan Vergelijking kleiner dan of gelijk Vergelijking groter dan Vergelijking groter dan of gelijk aan |
9 L-> R | !FOUT! illegaal karakter '!' | Gelijkheid Ongelijkheid |
10 L-> R | | Bitwise EN |
11 L-> R | | Bitsgewijze XOR |
12 L-> R | | Bitsgewijs OF |
13 L-> R | | Logisch EN |
14 L-> R | | Logische OF |
15 R-> L | <<= | Voorwaardelijk (zie opmerking hieronder) Toewijzing Vermenigvuldigingstoewijzing Divisie-opdracht Modulus toewijzing Toevoegingstoewijzing Aftrekken toewijzing Bitwise shift naar links toewijzing Bitwise shift naar rechts toewijzing Bitsgewijze EN toewijzing Bitsgewijze OF-toewijzing Bitwise XOR-toewijzing |
16 R-> L | werpen | Gooi uitdrukking |
17 L-> R | | Komma-operator |
Opmerkingen:
- Voorrangsniveau 1 is het hoogste voorrangsniveau en niveau 17 het laagste. Operators met een hoger voorrangsniveau worden eerst geëvalueerd.
- L-> R betekent associativiteit van links naar rechts.
- R-> L betekent associativiteit van rechts naar links.
Gevolgtrekking
Dit gaat allemaal over de operators in C ++.
We hebben bijna alle operators besproken. Enkele specifieke operators die aanwezig zijn in de bovenstaande prioriteitstabel die we niet hebben besproken, zullen worden besproken volgens de onderwerpen die we behandelen in onze komende tutorials.
Zie hier om de volledige lijst met C ++ - zelfstudies te verkennen
Aanbevolen literatuur
- Voorbeelden van rekenkundige en booleaanse operatoren in Unix Shell Script
- Python-operators
- Nieuwe / verwijder operatoren in C ++ met voorbeelden
- Python-gegevenstypen
- Unix voorwaardelijke verklaringen: If Then Else en relationele operatoren
- Python DateTime-zelfstudie met voorbeelden
- Zelfstudie over HTML-injectie: typen en preventie met voorbeelden
- Knip Commando in Unix met voorbeelden