C - Operators
Een operator is een symbool dat de compiler vertelt om specifieke wiskundige of logische functies uit te voeren. C-taal is rijk aan ingebouwde operators en biedt de volgende typen operators −
- Rekenkundige operatoren
- Relationele operators
- Logische operators
- Bitwise-operators
- Opdrachtoperators
- Diverse operators
In dit hoofdstuk zullen we kijken naar de manier waarop elke operator werkt.
Rekenkundige operatoren
De volgende tabel toont alle rekenkundige operatoren die door de C-taal worden ondersteund. Veronderstel variabele A houdt 10 en variabele B houdt 20 dan −
Voorbeelden tonen
Operator | Beschrijving | Voorbeeld |
---|---|---|
+ | Voegt twee operanden toe. | A + B =30 |
− | Trekt de tweede operand af van de eerste. | A − B =-10 |
* | Vermenigvuldigt beide operanden. | A * B =200 |
/ | Verdeelt de teller door de teller. | B / A =2 |
% | Modulus Operator en rest van na een deling van gehele getallen. | B % A =0 |
++ | Ophogingsoperator verhoogt de integerwaarde met één. | A++ =11 |
-- | Decrement-operator verlaagt de integerwaarde met één. | A-- =9 |
Relationele operators
De volgende tabel toont alle relationele operatoren die door C worden ondersteund. Veronderstel variabele A houdt 10 en variabele B houdt 20 dan −
Voorbeelden tonen
Operator | Beschrijving | Voorbeeld |
---|---|---|
== | Controleert of de waarden van twee operanden gelijk zijn of niet. Zo ja, dan wordt de voorwaarde waar. | (A ==B) is niet waar. |
!= | Controleert of de waarden van twee operanden gelijk zijn of niet. Als de waarden niet gelijk zijn, wordt de voorwaarde waar. | (A !=B) is waar. |
> | Controleert of de waarde van de linker operand groter is dan de waarde van de rechter operand. Zo ja, dan wordt de voorwaarde waar. | (A> B) is niet waar. |
< | Controleert of de waarde van de linker operand kleiner is dan de waarde van de rechter operand. Zo ja, dan wordt de voorwaarde waar. | (A |
>= | Controleert of de waarde van de linker operand groter is dan of gelijk is aan de waarde van de rechter operand. Zo ja, dan wordt de voorwaarde waar. | (A>=B) is niet waar. |
<= | Controleert of de waarde van de linker operand kleiner is dan of gelijk is aan de waarde van de rechter operand. Zo ja, dan wordt de voorwaarde waar. | (A <=B) is waar. |
Logische operators
De volgende tabel toont alle logische operatoren die door de C-taal worden ondersteund. Veronderstel variabele A bevat 1 en variabele B heeft 0, dan −
Voorbeelden tonen
Operator | Beschrijving | Voorbeeld |
---|---|---|
&& | Logische AND-operator genoemd. Als beide operanden niet nul zijn, wordt de voorwaarde waar. | (A &&B) is niet waar. |
|| | Logische OR-operator genoemd. Als een van de twee operanden niet nul is, wordt de voorwaarde waar. | (A || B) is waar. |
! | Logische NOT-operator genoemd. Het wordt gebruikt om de logische toestand van zijn operand om te keren. Als een voorwaarde waar is, maakt de logische NOT-operator deze onwaar. | !(A &&B) is waar. |
Bitwise-operators
Bitwise-operator werkt op bits en voert bit-voor-bit bewerkingen 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 dat A =60 en B =13 in binair formaat, dan zijn ze als volgt −
A =0011 1100
B =0000 1101
-----------------
A&B =0000 1100
A|B =0011 1101
A^B =0011 0001
~A =1100 0011
In de volgende tabel staan de bitsgewijze operatoren die door C worden ondersteund. Neem aan dat variabele 'A' 60 bevat en variabele 'B' 13, dan −
Voorbeelden tonen
Operator | Beschrijving | Voorbeeld |
---|---|---|
& | Binaire AND-operator kopieert een bit naar het resultaat als het in beide operanden bestaat. | (A &B) =12, d.w.z. 0000 1100 |
| | Binaire OR-operator kopieert een bit als het in een van beide operands voorkomt. | (A | B) =61, d.w.z. 0011 1101 |
^ | Binaire XOR-operator kopieert de bit als deze in één operand is ingesteld, maar niet in beide. | (A ^ B) =49, d.w.z. 0011 0001 |
~ | Binary One's Complement Operator is unair en heeft het effect van 'flipping' bits. | (~A ) =~(60), d.w.z. -0111101 |
<< | Binaire linker shift-operator. De waarde van de linkeroperand wordt naar links verplaatst met het aantal bits dat is opgegeven door de rechteroperand. | A <<2 =240 d.w.z. 1111 0000 |
>> | Binaire Right Shift-operator. De waarde van de linkeroperand wordt naar rechts verplaatst met het aantal bits dat is opgegeven door de rechteroperand. | A>> 2 =15 d.w.z. 0000 1111 |
Toewijzingsoperators
De volgende tabel bevat de toewijzingsoperators die worden ondersteund door de C-taal −
Voorbeelden tonen
Operator | Beschrijving | Voorbeeld |
---|---|---|
= | Eenvoudige toewijzingsoperator. Wijst waarden toe van operanden aan de rechterkant aan operanden aan de linkerkant | C =A + B wijst de waarde van A + B toe aan C |
+= | Voeg een AND-toewijzingsoperator toe. Het voegt de rechter operand toe aan de linker operand en wijst het resultaat toe aan de linker operand. | C +=A is gelijk aan C =C + A |
-= | Trek de AND-toekenningsoperator af. Het trekt de rechter operand af van de linker operand en wijst het resultaat toe aan de linker operand. | C -=A is gelijk aan C =C - A |
*= | Vermenigvuldig EN toewijzingsoperator. Het vermenigvuldigt de rechter operand met de linker operand en wijst het resultaat toe aan de linker operand. | C *=A is gelijk aan C =C * A |
/= | Deel AND toewijzingsoperator. Het verdeelt de linker operand door de rechter operand en wijst het resultaat toe aan de linker operand. | C /=A is gelijk aan C =C / A |
%= | Modulus EN toewijzingsoperator. Het neemt modulus met behulp van twee operanden en wijst het resultaat toe aan de linker operand. | C %=A is gelijk aan C =C % A |
<<= | Linker shift AND toewijzingsoperator. | C <<=2 is hetzelfde als C =C <<2 |
>>= | Rechts shift AND toewijzingsoperator. | C>>=2 is hetzelfde als C =C>> 2 |
&= | Bitwise AND-toewijzingsoperator. | C &=2 is hetzelfde als C =C &2 |
^= | Bitwise exclusieve OR en toewijzingsoperator. | C ^=2 is hetzelfde als C =C ^ 2 |
|= | Bitsgewijze inclusief OR en toewijzingsoperator. | C |=2 is hetzelfde als C =C | 2 |
Diverse operators ↦ sizeof &ternair
Naast de hierboven besproken operators zijn er nog een paar andere belangrijke operators, waaronder sizeof en ? : ondersteund door de C-taal.
Voorbeelden tonen
Operator | Beschrijving | Voorbeeld |
---|---|---|
sizeof() | Retourneert de grootte van een variabele. | sizeof(a), waarbij a een geheel getal is, geeft 4 terug. |
& | Retourneert het adres van een variabele. | &a; geeft het werkelijke adres van de variabele terug. |
* | Aanwijzer naar een variabele. | *a; |
? : | Voorwaardelijke expressie. | Als de voorwaarde waar is? dan waarde X :anders waarde Y |
Voorrang van operators in C
De operatorprioriteit bepaalt de groepering van termen in een uitdrukking en bepaalt hoe een uitdrukking wordt geëvalueerd. Bepaalde operators hebben een hogere prioriteit dan andere; de operator voor vermenigvuldigen heeft bijvoorbeeld een hogere prioriteit dan de operator voor optellen.
Bijvoorbeeld x =7 + 3 * 2; hier wordt x 13 toegewezen, niet 20 omdat de operator * een hogere prioriteit heeft dan +, dus het wordt eerst vermenigvuldigd met 3*2 en vervolgens opgeteld bij 7.
Hier verschijnen operators met de hoogste prioriteit bovenaan de tabel, die met de laagste onderaan. Binnen een uitdrukking worden eerst operators met een hogere prioriteit geëvalueerd.
Voorbeelden tonen
Categorie | Operator | Associativiteit |
---|---|---|
Postfix | () [] -> . ++ - - | Links naar rechts |
Unair | + - ! ~ ++ - - (type)* &groottevan | Van rechts naar links |
Multiplicatief | * / % | Links naar rechts |
Additief | + - | Links naar rechts |
Shift | <<>> | Links naar rechts |
Relationeel | <<=>>= | Links naar rechts |
Gelijkheid | ==!= | Links naar rechts |
Bitgewijs EN | & | Links naar rechts |
Bitwise XOR | ^ | Links naar rechts |
Bitgewijs OF | | | Links naar rechts |
Logisch EN | && | Links naar rechts |
Logische OF | || | Links naar rechts |
Voorwaardelijk | ?: | Van rechts naar links |
Opdracht | =+=-=*=/=%=>>=<<=&=^=|= | Van rechts naar links |
Komma | , | Links naar rechts |
C Taal