Villkorliga satser i C: If, Else, Nested If med exempel
โก Smart sammanfattning
Villkorliga satser i C styr flรถdet i ett program genom att endast exekvera kodblock nรคr ett testat villkor utvรคrderas till sant, vilket mรถjliggรถr beslutsfattande genom if-, if-else-, kapslade och else-if-stegekonstruktioner.

Vad รคr ett villkorligt uttalande i C?
Villkorssatser i C-programmering anvรคnds fรถr att fatta beslut baserade pรฅ villkor. Villkorssatser exekveras sekventiellt nรคr det inte finns nรฅgot villkor runt satserna. Om du sรคtter ett villkor fรถr ett block av satser kan exekveringsflรถdet รคndras baserat pรฅ resultatet som utvรคrderas av villkoret. Denna process kallas beslutsfattande i 'C'.
Till skillnad frรฅn loopar i C som upprepar kod, villkorliga satser vรคljer en sรถkvรคg.
I 'C'-programmering รคr villkorliga uttalanden mรถjliga med hjรคlp av fรถljande tvรฅ konstruktioner:
- Om uttalande
- If-else-sats
Det kallas ocksรฅ fรถr fรถrgrening eftersom ett program bestรคmmer vilken sats som ska kรถras baserat pรฅ resultatet av det utvรคrderade villkoret.
Om uttalande
Det รคr ett av de kraftfulla villkorliga uttalandena. If-satsen รคr ansvarig fรถr att modifiera flรถdet av exekvering av ett program. If-satsen anvรคnds alltid med ett villkor. Villkoret utvรคrderas fรถrst innan nรฅgon sats kรถrs inuti Ifs brรถdtext. Syntaxen fรถr if-satsen รคr fรถljande:
if (condition)
instruction;
Villkoret utvรคrderas till antingen sant eller falskt. True รคr alltid ett vรคrde som inte รคr noll, och false รคr ett vรคrde som innehรฅller noll. Instruktioner kan vara en enstaka instruktion eller ett kodblock som omges av hรคngslen { }.
Fรถljande program illustrerar anvรคndningen av if-konstruktion i 'C'-programmering:
#include<stdio.h> int main() { int num1=1; int num2=2; if(num1<num2) //test-condition { printf("num1 is smaller than num2"); } return 0; }
Produktion:
num1 is smaller than num2
Ovanstรฅende program illustrerar anvรคndningen av if-konstruktion fรถr att kontrollera likheten mellan tvรฅ tal.
- I programmet ovan har vi initierat tvรฅ variabler med num1, num2 med vรคrdet 1, 2 respektive.
- Sedan har vi anvรคnt if med ett testuttryck fรถr att kontrollera vilket nummer som รคr minst och vilket nummer som รคr stรถrst. Vi har anvรคnt ett relationsuttryck i if-konstruktion. Eftersom vรคrdet pรฅ num1 รคr mindre รคn num2 kommer villkoret att utvรคrderas till sant.
- Sรฅledes kommer det att skriva ut uttalandet inuti blocket av If. Dรคrefter kommer kontrollen att gรฅ utanfรถr blocket och programmet avslutas med ett framgรฅngsrikt resultat.
Relations Operatorer
C har sex relationsoperatorer som kan anvรคndas fรถr att formulera ett booleskt uttryck fรถr att fatta ett beslut och testa villkor, vilket returnerar sant eller falskt:
<โ mindre รคn<=โ mindre รคn eller lika med>โ stรถrre รคn>=โ stรถrre รคn eller lika med==โ lika med!=โ inte lika med
Lรคgg mรคrke till att det lika testet (==) skiljer sig frรฅn uppdragsoperatรถren (=) eftersom det รคr ett av de vanligaste problemen som en programmerare mรถter genom att blanda ihop dem.
Till exempel:
int x = 41; x =x+ 1; if (x == 42) { printf("You succeed!");}
Utgรฅng:
You succeed
Tรคnk pรฅ att ett villkor som utvรคrderas till ett vรคrde som inte รคr noll anses vara sant.
Till exempel:
int present = 1; if (present) printf("There is someone present in the classroom \n");
Produktion:
There is someone present in the classroom
If-Else uttalandet
If-else-satsen รคr en utรถkad version av If. Den allmรคnna formen av if-else รคr fรถljande:
if (test-expression)
{
True block of statements
}
Else
{
False block of statements
}
Statements;
I den hรคr typen av konstruktion, om vรคrdet fรถr test-uttryck รคr sant, sรฅ kommer blocket med satser att exekveras. Om vรคrdet fรถr test-uttryck รคr falskt, sรฅ kommer blocket med satser att exekveras. I vilket fall som helst, efter exekveringen, kommer kontrollen automatiskt att รถverfรถras till de satser som visas utanfรถr blocket fรถr If.
Fรถljande program illustrerar anvรคndningen av if-else-konstruktionen:
Vi kommer att initialisera en variabel med nรฅgot vรคrde och skriva ett program fรถr att avgรถra om vรคrdet รคr mindre รคn tio eller stรถrre รคn tio.
Lรฅt oss bรถrja.
#include<stdio.h> int main() { int num=19; if(num<10) { printf("The value is less than 10"); } else { printf("The value is greater than 10"); } return 0; }
Produktion:
The value is greater than 10
- Vi har initierat en variabel med vรคrdet 19. Vi mรฅste ta reda pรฅ om talet รคr stรถrre eller mindre รคn 10 med hjรคlp av ett 'C'-program. Fรถr att gรถra detta har vi anvรคnt om-else-konstruktionen.
- Hรคr har vi angett ett villkor num<10 eftersom vi mรฅste jรคmfรถra vรฅrt vรคrde med 10.
- Som du kan se รคr det fรถrsta blocket alltid ett sant block, vilket betyder att om vรคrdet pรฅ testuttrycket รคr sant sรฅ kommer det fรถrsta blocket som รคr If att exekveras.
- Det andra blocket รคr ett annat block. Detta block innehรฅller de satser som kommer att exekveras om vรคrdet pรฅ testuttrycket blir falskt. I vรฅrt program รคr vรคrdet pรฅ num stรถrre รคn tio, sรฅ testvillkoret blir falskt och annars exekveras blocket. Sรฅledes kommer vรฅr utdata frรฅn ett annat block som รคr "Vรคrdet รคr stรถrre รคn 10". Efter if-else kommer programmet att avslutas med ett framgรฅngsrikt resultat.
I 'C'-programmering kan vi anvรคnda flera if-else-konstruktioner inom varandra som kallas kapsling av if-else-satser.
Villkorliga uttryck
Ett annat sรคtt att uttrycka en if-else-sats รคr genom att introducera ?:-operatorn. I ett villkorligt uttryck har ?:-operatorn bara en sats associerad med if- och else-satsen.
Till exempel:
#include <stdio.h> int main() { int y; int x = 2; y = (x >= 6) ? 6 : x;/* This is equivalent to: if (x >= 5) y = 5; else y = x; */ printf("y =%d ",y); return 0;}
Produktion:
y =2
Kapslade If-else-uttalanden
Nรคr en serie beslut krรคvs anvรคnds kapslade if-else. Nesting innebรคr att anvรคnda en om-annas-konstruktion inom en annan.
Lรฅt oss skriva ett program fรถr att illustrera anvรคndningen av kapslade if-else.
#include<stdio.h> int main() { int num=1; if(num<10) { if(num==1) { printf("The value is:%d\n",num); } else { printf("The value is greater than 1"); } } else { printf("The value is greater than 10"); } return 0; }
Produktion:
The value is:1
Ovanstรฅende program kontrollerar om ett tal รคr mindre eller stรถrre รคn 10 och skriver ut resultatet med en kapslad if-else-konstruktion.
- Fรถrst har vi deklarerat en variabel num med vรคrdet som 1. Sedan har vi anvรคnt if-else-konstruktionen.
- I det yttre if-else-lรคget kontrollerar det angivna villkoret om ett tal รคr mindre รคn 10. Om villkoret รคr sant, dรฅ och endast dรฅ, kommer det inre blocket att exekveras. I det hรคr fallet รคr villkoret sant, vilket innebรคr att det inre blocket bearbetas.
- I det inre blocket har vi รฅterigen ett villkor som kontrollerar om vรฅr variabel innehรฅller vรคrdet 1 eller inte. Nรคr ett villkor รคr sant, kommer den att bearbeta If-blocket, annars kommer den att bearbeta ett else-block. I det hรคr fallet รคr villkoret sant, vilket innebรคr att If-blocket kรถrs och vรคrdet skrivs ut pรฅ utdataskรคrmen.
- Programmet ovan skriver ut vรคrdet pรฅ en variabel och avslutas med framgรฅng.
Fรถrsรถk att รคndra vรคrdet pรฅ variabel se hur programmet beter sig.
OBS: I kapslade if-else-konstruktioner mรฅste vi vara fรถrsiktiga med indenteringen eftersom flera if-else-konstruktioner รคr involverade i processen, sรฅ det blir svรฅrt att lista ut enskilda konstruktioner. Korrekt indentering gรถr det enkelt att lรคsa programmet.
Kapslade Else-if-pรฅstรฅenden
Nested else-if anvรคnds nรคr flervรคgsbeslut krรคvs.
Den allmรคnna syntaxen fรถr hur else-if-stegar รคr konstruerade i "C"-programmering รคr fรถljande:
if (test - expression 1) { statement1; } else if (test - expression 2) { Statement2; } else if (test - expression 3) { Statement3; } else if (test - expression n) { Statement n; } else { default; } Statement x;
Denna typ av struktur kallas fรถr else-if-stege. Denna kedja ser generellt ut som en stege, dรคrfรถr kallas den รคven fรถr en else-if-stege. Testuttrycken utvรคrderas uppifrรฅn och ner. Nรคr ett sant testuttryck hittas, kรถrs en sats som รคr associerad med det. Nรคr alla n testuttryck blir falska, kรถrs standardsatsen else.
Lรฅt oss se sjรคlva arbetet med hjรคlp av ett program.
#include<stdio.h> int main() { int marks=83; if(marks>75){ printf("First class"); } else if(marks>65){ printf("Second class"); } else if(marks>55){ printf("Third class"); } else{ printf("Fourth class"); } return 0; }
Produktion:
First class
Ovanstรฅende program skriver ut betyget enligt poรคngen i ett test. Vi har anvรคnt else-if ladder-konstruktionen i programmet ovan.
- Vi har initierat en variabel med markeringar. I else-if-stegestrukturen har vi tillhandahรฅllit olika villkor.
- Vรคrdet frรฅn de variabla markeringarna kommer att jรคmfรถras med det fรถrsta villkoret eftersom det รคr sant att pรฅstรฅendet som รคr associerat med det kommer att skrivas ut pรฅ utdataskรคrmen.
- Om det fรถrsta testvillkoret visar sig vara falskt jรคmfรถrs det med det andra villkoret.
- Denna process fortsรคtter tills alla uttryck har utvรคrderats, annars kommer kontrollen att lรคmna else-if-stegen och standardsatsen skrivs ut.
Fรถrsรถk att รคndra vรคrdet och mรคrk fรถrรคndringen i utdata.





