How many logical operators are there in C programming language?

Logiske Operatorer i C: En Komplet Guide

10/11/2013

Rating: 4.94 (15326 votes)

Inden for programmeringens verden er operatorer de grundlæggende byggesten, der giver os mulighed for at udføre forskellige operationer på vores data. I programmeringssproget C er logiske operatorer afgørende for at skabe komplekse betingelser og styre programmets flow. De er hjørnestenen i beslutningstagning i kode, hvilket gør det muligt for et program at reagere forskelligt baseret på forskellige input eller tilstande. Uden dem ville vi være begrænset til simple, lineære programmer. Denne artikel vil dykke ned i de tre logiske operatorer i C, forklare deres funktion, vise eksempler og give tips til at bruge dem effektivt.

What are logical operators in C?
Indholdsfortegnelse

Hvad Er Logiske Operatorer i C?

Logiske operatorer i C bruges til at evaluere en eller flere betingelser og returnere enten sand (true) eller falsk (false). I C-sprogets kontekst er der ikke en indbygget boolesk datatype som i andre sprog. I stedet behandler C heltal som booleske værdier: Et nul (0) tolkes som falsk, og enhver værdi, der ikke er nul, tolkes som sand. Resultatet af en logisk operation er altid enten 0 (falsk) eller 1 (sand).

Der findes tre logiske operatorer i C:

  • && (Logisk AND)
  • || (Logisk OR)
  • ! (Logisk NOT)

Disse operatorer bruges typisk i kontrolstrukturer som if, while og for-løkker for at skabe mere komplekse og meningsfulde betingelser.

Den Logiske AND-Operator (&&)

Den logiske AND-operator, repræsenteret ved &&, er en binær operator, hvilket betyder, at den arbejder på to operander. Den returnerer sand (1), hvis og kun hvis begge dens operander er sande (ikke-nul). Hvis en af operanderne, eller begge, er falske (0), vil resultatet være falsk (0). En vigtig egenskab ved &&-operatoren er 'short-circuiting'. Det betyder, at hvis den første operand evalueres til falsk, vil den anden operand slet ikke blive evalueret, da det samlede resultat under alle omstændigheder vil være falsk. Dette kan bruges til at forbedre ydeevnen og undgå fejl.

What is logical NOT operator?
! is a type of Logical Operator and is read as " NOT " or " Logical NOT ". This operator is used to perform "logical NOT" operation, i.e. the function similar to Inverter gate in digital electronics. Syntax: Condition

Sandhedstabel for Logisk AND (&&)

En sandhedstabel er en simpel måde at visualisere resultatet af en logisk operation på. Her er tabellen for &&:

Operand AOperand BA && B
Sand (1)Sand (1)Sand (1)
Sand (1)Falsk (0)Falsk (0)
Falsk (0)Sand (1)Falsk (0)
Falsk (0)Falsk (0)Falsk (0)

Eksempel på Logisk AND

Lad os se på et eksempel, hvor vi tjekker, om en bruger er logget ind OG har administratorrettigheder.

#include <stdio.h> int main() { int erBrugerLoggetInd = 1; // 1 betyder sand int harAdminRettigheder = 0; // 0 betyder falsk if (erBrugerLoggetInd && harAdminRettigheder) { printf("Velkommen, administrator!\n"); } else { printf("Adgang nægtet eller du er ikke administrator.\n"); } return 0; }

I dette tilfælde vil outputtet være "Adgang nægtet eller du er ikke administrator.", fordi selvom erBrugerLoggetInd er sand, er harAdminRettigheder falsk. Derfor er den samlede betingelse(1 && 0) falsk.

Den Logiske OR-Operator (||)

Den logiske OR-operator, repræsenteret ved ||, er også en binær operator. Den returnerer sand (1), hvis mindst én af dens operander er sand (ikke-nul). Den returnerer kun falsk (0), hvis begge operander er falske (0). Ligesom && bruger || også 'short-circuiting'. Hvis den første operand evalueres til sand, vil den anden operand ikke blive evalueret, da det samlede resultat allerede er kendt som sand.

Which Boolean operator is evaluated only if the first expression is true?
The second expression of the && operator is evaluated only if the first expression evaluates to true; the second expression of the || operator is evaluated only if the first expression evaluates to false. Learn about the boolean operators that are available in the F# programming language.

Sandhedstabel for Logisk OR (||)

Operand AOperand BA || B
Sand (1)Sand (1)Sand (1)
Sand (1)Falsk (0)Sand (1)
Falsk (0)Sand (1)Sand (1)
Falsk (0)Falsk (0)Falsk (0)

Eksempel på Logisk OR

Forestil dig, at en bruger får rabat, hvis de enten er studerende ELLER pensionist.

#include <stdio.h> int main() { int erStuderende = 0; int erPensionist = 1; if (erStuderende || erPensionist) { printf("Du er berettiget til rabat!\n"); } else { printf("Du er desværre ikke berettiget til rabat.\n"); } return 0; }

Her vil outputtet være "Du er berettiget til rabat!", fordi erPensionist er sand (1). Det er nok til, at hele udtrykket (0 || 1) bliver sandt.

Den Logiske NOT-Operator (!)

Den logiske NOT-operator, repræsenteret ved !, er en unær operator, hvilket betyder, at den kun arbejder på én operand. Dens funktion er simpel: den inverterer den logiske tilstand af sin operand. Hvis operanden er sand (ikke-nul), returnerer ! falsk (0). Hvis operanden er falsk (0), returnerer ! sand (1).

How do equality operators compare segment and offset?
Equality operators compare both segment and offset. These examples illustrate relational and equality operators. if ( x < y ) Because x and y are equal, the expression in this example yields the value 0. char *p;[/caption]

Sandhedstabel for Logisk NOT (!)

Operand A!A
Sand (1)Falsk (0)
Falsk (0)Sand (1)

Eksempel på Logisk NOT

Denne operator bruges ofte til at tjekke, om en betingelse ikke er opfyldt.

#include <stdio.h> int main() { int erFilenTom = 0; // Antag, at filen ikke er tom // Vi fortsætter, hvis filen IKKE er tom if (!erFilenTom) { printf("Filen indeholder data og kan behandles.\n"); } else { printf("Filen er tom.\n"); } return 0; }

Outputtet vil være "Filen indeholder data og kan behandles.", fordi erFilenTom er 0 (falsk), og !0 evalueres til 1 (sand).

Tips og Gode Råd

For at mestre brugen af logiske operatorer, er her nogle tips og tricks:

  • Vær opmærksom på operatorpræcedens: NOT (!) har en meget høj præcedens, højere end de fleste andre operatorer. AND (&&) har højere præcedens end OR (||). Når du er i tvivl, eller for at gøre din kode mere læselig, så brug altid parenteser () til at gruppere dine udtryk. For eksempel er (a && b) || c mere tydeligt end a && b || c.
  • Undgå dobbelt negation: At skrive !!x kan virke som en smart måde at konvertere en vilkårlig ikke-nul værdi til præcis 1, men det kan gøre koden sværere at læse. En eksplicit sammenligning som x != 0 er ofte mere udtryksfuld og lettere at forstå for andre udviklere.
  • Brug med booleske variable for klarhed: Selvom C ikke har en indbygget bool-type før C99-standarden (hvor _Bool blev introduceret, ofte brugt via <stdbool.h>), kan du simulere det med heltal. At bruge variabler med navne som isReady eller hasFailed og anvende logiske operatorer på dem gør koden selvforklarende.

Almindelige Fejl og Hvordan Man Undgår Dem

Nye programmører støder ofte på de samme faldgruber, når de arbejder med logiske operatorer.

[caption id="attachment_999" align="aligncenter" width="800"]Why is a bool error on Line 21? And also the error appeared at line 21. That might be helpful if you actually posted your code. But based on the error message, you have a number (or an expression that evaluates to a number) that you were trying to use as if it were a true/false value (that is, a “bool”). Some part of your if statement isn’t saying what you meant.

Forveksling af '=' med '=='

En af de mest almindelige fejl i C er at bruge tildelingsoperatoren = i stedet for lighedsoperatoren == i en betingelse. For eksempel:

int x = 5; if (x = 10) { // Fejl! Dette tildeler 10 til x og udtrykket er altid sandt // ... denne kode vil altid køre }

Udtrykket x = 10 tildeler værdien 10 til x, og selve tildelingsudtrykket evalueres til den tildelte værdi, altså 10. Da 10 ikke er nul, er betingelsen altid sand. Den korrekte måde er at bruge if (x == 10).

Misforståelse af Negerede Sammenligninger

At negere en sammenligning kan være forvirrende. For eksempel er !(x > y) ikke det samme som x < y. Det er faktisk ækvivalent med x <= y. Det er vigtigt at tænke over, hvad negationen af en betingelse præcist betyder for at undgå logiske fejl i programmet.

Ofte Stillede Spørgsmål (FAQ)

Hvor mange logiske operatorer er der i C?

Der er tre logiske operatorer i C-programmeringssproget: Logisk AND (&&), Logisk OR (||) og Logisk NOT (!).

What are C operators used for?
Operators can be used to perform operation directly on some value (C Literals) or on C variables. In the C language we can perform arithmetic operations, logical and relational operations, bitwise operations, etc. using the C operators on data. Q2. What are the different types of operators C supports?

Hvad er forskellen på logiske og bitvise operatorer?

Logiske operatorer (&&, ||, !) arbejder på logiske værdier (sand/falsk, eller ikke-nul/nul) og bruges til at kombinere betingelser. Bitvise operatorer (&, |, ~, ^, <<, >>) arbejder direkte på de individuelle bits i deres operander. For eksempel vil 5 && 2 evaluere til 1 (sand), fordi begge er ikke-nul. Derimod vil 5 & 2 (bitvis AND) evaluere til 0, fordi den binære repræsentation (101 & 010) ikke har nogen bits sat på samme position.

Kan logiske operatorer bruges med andre datatyper end heltal?

Ja. I C kan logiske operatorer bruges med enhver datatype, der kan evalueres i en boolesk kontekst. Dette inkluderer heltal (int), tegn (char), flydende tal (float, double) og endda pointere. En nul-pointer evalueres til falsk, mens en ikke-nul-pointer evalueres til sand.

Konklusion

De logiske operatorer i C er et kraftfuldt værktøj til at styre programmets flow og træffe komplekse beslutninger. Ved at forstå, hvordan &&, || og ! fungerer, herunder deres sandhedstabeller, præcedens og 'short-circuiting'-adfærd, kan du skrive renere, mere effektiv og fejlfri kode. Som med alle aspekter af programmering er nøglen til at mestre disse operatorer øvelse. Eksperimenter med dem i dine egne programmer for at opbygge en solid forståelse og forbedre dine C-programmeringsevner.

Hvis du vil læse andre artikler, der ligner Logiske Operatorer i C: En Komplet Guide, kan du besøge kategorien Sundhed.

Go up