Prioritet | Kategori | Operator | Associativitet |
---|---|---|---|
Högsta | Unära postfixoperatorer | (), [], ->, ., ++, -- | vänster |
Unära prefixoperatorer | !, ++, --, +, -, *, &, sizeof, (typ) | höger | |
Multiplikation mm | *, /, % | vänster | |
Addition mm | +, - | vänster | |
Jämförelser | <, <=, >=, > | vänster | |
Likhetsjämförelser | ==, != | vänster | |
Logiskt OCH | && | vänster | |
Logiskt ELLER | || | vänster | |
Lägsta | Tilldelning | =, +=, -=, *=, /=, %= | höger |
Några kommentarer:
Prioritet och associativitet används för att bestämma hur ett uttryck ska beräknas.
Ska till exempel
1 - 2 - 3 * 4
beräknas som
1 - (2 - (3 * 4))
vilket blir 11,
eller kanske som
((1 - 2) - 3) * 4
vilket blir -16,
eller på något annat sätt?
Om ett uttryck innehåller operatorer med olika prioritet,
grupperas uttrycket efter prioritetsordningen hos operatorerna.
Exempel:
2 * 3 + 4 * 5
tolkas som
(2 * 3) + (4 * 5)
och inte till exempel som
2 * (3 + 4) * 5
eftersom operatorn * (multiplikation) har högre prioritet än operatorn + (addition).
Om ett uttryck innehåller flera operatorer med samma prioritet,
grupperas uttrycket efter associativiteten hos operatorerna.
Exempel:
2 - 3 - 4
tolkas som
(2 - 3) - 4
och inte som
2 - (3 - 4)
eftersom operatorn - (subtraktion) är vänsterassociativ.
Parenteser kan alltid användas för att gruppera uttrycket annorlunda, till exempel som
2 * (3 - (4 - 5))
Den fullständiga tabellen, med alla operatorer som finns i C:
Prioritet | Kategori | Operator | Associativitet |
---|---|---|---|
Högsta | Unära postfixoperatorer | (), [], ->, ., ++, -- | vänster |
Unära prefixoperatorer | !, ~, ++, --, +, -, *, &, sizeof, (typ) | höger | |
Multiplikation mm | *, /, % | vänster | |
Addition mm | +, - | vänster | |
Bitvis skift | <<, >> | vänster | |
Jämförelser | <, <=, >=, > | vänster | |
Likhetsjämförelser | ==, != | vänster | |
Bitvis OCH | & | vänster | |
Bitvis XOR | ^ | vänster | |
Bitvis ELLER | | | vänster | |
Logiskt OCH | && | vänster | |
Logiskt ELLER | || | vänster | |
Villkorsoperatorn | ?: | höger | |
Tilldelning | =, +=, -=, *=, /=, %=, >>=, <<=, &=, ^=, |= | höger | |
Lägsta | Komma-operatorn | , | vänster |