13/08/2022
C understøtter et bredt udvalg af indbyggede operatorer. En operator er et symbol, der repræsenterer en handling eller en række handlinger på en variabel eller et sæt variabler. I C-sproget bruges disse symboler til at udføre specifikke matematiske og logiske operationer på operander. Operatorer er de grundlæggende byggesten i computerprogrammering, der instruerer compileren i at udføre bestemte handlinger.

I C er en operator et tegn, der kan anvendes til matematiske, relationelle, bitwise, betingede eller logiske manipulationer. C-programmeringssproget har mange indbyggede operatorer, som kan bruges til at udføre forskellige opgaver, alt efter programmets behov. Operatorer bruges typisk i programmer til at manipulere data og variabler og er inkluderet i matematiske, logiske eller betingede udsagn.
Lad os se på et simpelt eksempel:
int a = 100 + 50;I eksemplet ovenfor bruges '+' operatoren, kendt som additionsoperatoren, til at lægge to operander sammen. Her lægges to heltal sammen, og vi får en sum på 150.
Typer af Operatorer i C
I C-sproget findes der forskellige operatorer, som hjælper en programmør med at udføre forskellige typer operationer. Ved hjælp af disse operatorer kan vi håndtere en række forskellige operationer i et program. De primære kategorier er:
- Aritmetiske Operatorer
- Relationelle Operatorer
- Logiske Operatorer
- Bitwise Operatorer
- Tildelingsoperatorer
- Betingede Operatorer (Ternær Operator)
- Diverse Operatorer
Aritmetiske Operatorer i C
De aritmetiske operatorer i C-sproget hjælper en bruger med at udføre matematiske såvel som aritmetiske procedurer i et program. Disse inkluderer subtraktion (-), addition (+), division (/), multiplikation (*), rest ved division (%), dekrement (--) og inkrement (++).
Aritmetiske operatorer kan klassificeres i to typer:
- Binære Operatorer: Denne type operator arbejder med to operander, såsom +, -, *, /.
- Unære Operatorer: Denne type operator, som ++ og --, arbejder med en enkelt værdi (operand).
Tabellen nedenfor viser alle de aritmetiske operatorer, der er tilgængelige i C-sproget, samt deres individuelle funktioner.
| Operator | Navn | Beskrivelse |
|---|---|---|
| + | Addition | Lægger to operander sammen. |
| - | Subtraktion | Trækker den anden operand fra den første. |
| * | Multiplikation | Ganger begge operander. |
| / | Division | Dividerer tælleren med nævneren. |
| % | Modulus | Giver resten af en heltalsdivision. |
| ++ | Inkrement | Øger heltalsværdien med 1. |
| -- | Dekrement | Mindsker heltalsværdien med 1. |
Prefix og Postfix Inkrement/Dekrement
Der er to slags dekrement- og inkrementoperatorer:
- Prefix: En prefix-operator bruges, når vi anvender operatoren før den tilgængelige variabel i et program. I en prefix-inkrement-operator lægger programmet først 1 til og tildeler derefter den resulterende værdi til variablen. Med en prefix-dekrement-operator trækker programmet først 1 fra og tildeler derefter den resulterende værdi. For eksempel:
++xog--x. - Postfix: En postfix-operator bruges, når vi anvender operatoren efter den tilgængelige variabel. I en postfix-inkrement-operator tildeler programmet først værdien til variablen, lægger derefter 1 til og allokerer til sidst den resulterende værdi. Med en postfix-dekrement-operator tildeler programmet først variablens værdi, trækker derefter 1 fra og tildeler til sidst den resulterende værdi. For eksempel:
x++ogx--.
Program for Aritmetiske Operatorer
#include <stdio.h> int main() { int a = 25, b = 4, c; c = a + b; printf("a+b = %d\n", c); c = a - b; printf("a-b = %d\n", c); c = a * b; printf("a*b = %d\n", c); c = a / b; printf("a/b = %d\n", c); c = a % b; printf("Rest ved a divideret med b = %d\n", c); printf("++a = %d\n", ++a); // a er nu 26 printf("--b = %d\n", --b); // b er nu 3 printf("a++ = %d\n", a++); // Udskriver 26, derefter bliver a 27 printf("b-- = %d\n", b--); // Udskriver 3, derefter bliver b 2 return 0; }Output:
a+b = 29 a-b = 21 a*b = 100 a/b = 6 Rest ved a divideret med b = 1 ++a = 26 --b = 3 a++ = 26 b-- = 3Operatorerne +, - og * beregner henholdsvis addition, subtraktion og multiplikation. I almindelig matematik er 25/4 lig med 6.25. I ovenstående program er resultatet dog 6. Dette skyldes, at både variablerne a og b er heltal. Derfor skal outputtet også være et heltal, og compileren ignorerer decimalerne. Modulus-operatoren (%) kan kun bruges med heltal.
Relationelle Operatorer i C
Relationelle operatorer hjælper med at danne en forbindelse eller sammenligning mellem to operander. Resultatet af en relationel operation er enten sandt (1) eller falsk (0). Disse operatorer er afgørende for at træffe beslutninger i et program. De inkluderer (==, !=, <, >, <=, >=).
Nedenstående tabel viser alle de relationelle operatorer, som C understøtter. Her antager vi, at variablerne er a = 5, b = 9.
| Operator | Navn | Beskrivelse | Eksempel (a=5, b=9) |
|---|---|---|---|
| == | Lig med | Tjekker, om to operander er ens. | a == b returnerer 0 (falsk) |
| != | Ikke lig med | Tjekker, om to operander ikke er ens. | a != b returnerer 1 (sand) |
| > | Større end | Tjekker, om venstre operand er større end højre. | a > b returnerer 0 (falsk) |
| < | Mindre end | Tjekker, om venstre operand er mindre end højre. | a < b returnerer 1 (sand) |
| >= | Større end eller lig med | Tjekker, om venstre operand er større end eller lig med højre. | a >= b returnerer 0 (falsk) |
| <= | Mindre end eller lig med | Tjekker, om venstre operand er mindre end eller lig med højre. | a <= b returnerer 1 (sand) |
Logiske Operatorer i C
Når vi skal evaluere mere end én betingelse for at træffe en beslutning, bruger vi logiske operatorer. Et udtryk, der indeholder en logisk operator, returnerer enten 0 (falsk) eller 1 (sand). De tre logiske operatorer er AND (&&), OR (||) og NOT (!).
Nedenstående tabel viser de logiske operatorer. Vi antager, at variablerne a = 1 og b = 0 (hvor 1 er sand og 0 er falsk).
| Operator | Navn | Beskrivelse | Eksempel |
|---|---|---|---|
| && | Logisk AND | Returnerer sand (1), hvis begge operander er sande. | a && b returnerer 0 (falsk) |
| || | Logisk OR | Returnerer sand (1), hvis mindst én af operanderne er sand. | a || b returnerer 1 (sand) |
| ! | Logisk NOT | Returnerer sand (1), hvis betingelsen er falsk, og omvendt. | !a returnerer 0 (falsk) |
Bitwise Operatorer i C
I C bruger vi bitwise operatorer til at udføre operationer på bit-niveau på forskellige operander. Operatørerne konverterer først operanderne til bit-niveau og udfører derefter forskellige beregninger. Disse er yderst effektive til lavniveaus programmering.
Sandhedstabellen for &, | og ^ er som følger:
| a | b | a & b | a | b | a ^ b |
|---|---|---|---|---|
| 1 | 1 | 1 | 1 | 0 |
| 0 | 0 | 0 | 0 | 0 |
| 0 | 1 | 0 | 1 | 1 |
| 1 | 0 | 0 | 1 | 1 |
Disse operatorer inkluderer AND (&), OR (|), XOR (^), NOT (~), venstre skift (<<) og højre skift (>>).

Tildelingsoperatorer i C
En tildelingsoperator i et program har primært til formål at tildele en værdi til en variabel. Den mest almindelige tildelingsoperator er '='. C-sproget indeholder også et sæt af forkortede tildelingsoperatorer, der kombinerer en aritmetisk operation med en tildeling.
| Operator | Eksempel | Svarer til |
|---|---|---|
| = | a = b | a = b |
| += | a += b | a = a + b |
| -= | a -= b | a = a - b |
| *= | a *= b | a = a * b |
| /= | a /= b | a = a / b |
| %= | a %= b | a = a % b |
Betinget Operator (Ternær Operator) i C
Den betingede operator, også kendt som den ternære operator, bruges til at træffe beslutninger i en enkelt linje. Den tager tre operander. Syntaksen er:
Betingelse ? Udtryk1: Udtryk2Operatoren "?:" fungerer således: Først evalueres Betingelse. Hvis den er sand (ikke-nul), evalueres Udtryk1, og dens værdi bliver resultatet. Hvis Betingelse er falsk (nul), evalueres Udtryk2, og dens værdi bliver resultatet.
Diverse Operatorer i C
Ud over de ovennævnte operatorer implementerer C-sproget et par andre vigtige operatorer, som inkluderer sizeof(), adresseoperatoren &, pointeroperatoren * og andre.
| Operator | Navn | Beskrivelse |
|---|---|---|
| sizeof() | Størrelsesoperator | Returnerer størrelsen af en variabel i bytes. |
| & | Adresseoperator | Bruges til at få adressen på en variabel. |
| * | Pointeroperator | Bruges som en pointer til en variabel. |
| ?: | Betinget Operator | Returnerer en værdi baseret på en betingelse. |
Operatorpræcedens i C
Operatorpræcedens er en anden funktion i C, der bestemmer, hvordan termer i et udtryk grupperes, og hvordan et udtryk evalueres. Nogle operatorer har højere præcedens end andre. For eksempel har multiplikationsoperatoren forrang for additionsoperatoren. Hvis du skriver 3 + 4 * 2, vil multiplikationen blive udført først, hvilket resulterer i 3 + 8 = 11.
Nedenfor er en tabel, der viser præcedens og associativitet for C-operatorer, fra højest til lavest.
| Kategori | Operator | Associativitet |
|---|---|---|
| Postfix | () [] -> . ++ -- | Venstre til højre |
| Unær | + - ! ~ ++ -- (type)* & sizeof | Højre til venstre |
| Multiplikativ | * / % | Venstre til højre |
| Additiv | + - | Venstre til højre |
| Skift | << >> | Venstre til højre |
| Relationel | < <= > >= | Venstre til højre |
| Ligestilling | == != | Venstre til højre |
| Bitwise AND | & | Venstre til højre |
| Bitwise XOR | ^ | Venstre til højre |
| Bitwise OR | | | Venstre til højre |
| Logisk AND | && | Venstre til højre |
| Logisk OR | || | Venstre til højre |
| Betinget | ?: | Højre til venstre |
| Tildeling | = += -= *= /= %= >>= <<= &= ^= |= | Højre til venstre |
| Komma | , | Venstre til højre |
Ofte Stillede Spørgsmål (FAQ)
Hvad er forskellen mellem '=' og '==' i C?
Dette er en almindelig fejl for begyndere. '=' er tildelingsoperatoren, som bruges til at tildele en værdi til en variabel (f.eks. x = 5;). '==' er ligestillingsoperatoren, som bruges til at sammenligne to værdier for at se, om de er ens (f.eks. if (x == 5)).
Hvad betyder operatorpræcedens?
Operatorpræcedens definerer rækkefølgen, som operatorer evalueres i et udtryk. Operatorer med højere præcedens udføres før dem med lavere præcedens. For eksempel har multiplikation højere præcedens end addition.
Kan modulus-operatoren (%) bruges med flydende kommatal?
Nej, i C er modulus-operatoren (%) kun defineret for heltal (int, char, long osv.). Hvis du forsøger at bruge den med flydende kommatal (float, double), vil det resultere i en kompileringsfejl.
Hvorfor returnerer logiske operatorer 0 eller 1?
I C repræsenteres 'falsk' af værdien 0, og 'sand' repræsenteres af enhver værdi, der ikke er nul. Logiske operatorer (&&, ||, !) evaluerer betingelser og returnerer 1 for at angive 'sand' og 0 for at angive 'falsk'. Dette standardiserede output gør det nemt at bruge dem i kontrolstrukturer som if og while.
Konklusion
I denne artikel har vi udforsket de forskellige typer operatorer i C-programmeringssproget. Vi har lært, at operatorer er symboler, der bruges til at udføre forskellige operationer, hvad enten de er matematiske, logiske, relationelle eller bit-niveau. Forståelse af disse operatorer og deres præcedens er afgørende for at skrive effektiv og korrekt C-kode. Ved at mestre brugen af operatorer kan du manipulere data præcist og bygge komplekse og kraftfulde programmer.
Hvis du vil læse andre artikler, der ligner En Komplet Guide til Operatorer i C, kan du besøge kategorien Sundhed.
