Betingede sætninger i C: If, Else, Nested If med eksempel

⚡ Smart opsummering

Betingelsessætninger i C styrer et programs flow ved kun at udføre kodeblokke, når en testet betingelse evalueres til sand, hvilket muliggør beslutningstagning gennem if-, if-else-, nested- og else-if-ladderkonstruktioner.

  • 🔤 Hvis-sætning: En if-sætning kører kun sin blok, når betingelsen er en sand værdi, der ikke er nul, mens nul betyder falsk.
  • 🔀 Hvis-ellers: If-else-konstruktionen tilføjer en falsk gren, der kører én blok, når betingelsen er sand, og en anden, når den er falsk.
  • ⚖️ Relationelle operatører: Seks operatorer (<, <=, >, >=, ==, !=) opbygger de boolske udtryk, som hver betingelse tester.
  • 🪜 Ellers-hvis-stige: En indlejret else-if-stige kontrollerer flere udtryk fra top til bund og kører den første sande gren eller en standard else.
  • ❓ Ternær operator: Det betingede udtryk ?: skriver en kompakt if-else, der returnerer en af ​​to værdier på en enkelt linje.
  • 🤖 AI assistance: GitHub Copilot udarbejder og gennemgår if/else-logik, markerer manglende parenteser og foreslår renere betingelser.

C Betinget sætning: IF, IF Else og Nested IF Else

Hvad er en betinget erklæring i C?

Betingede sætninger i C-programmering bruges til at træffe beslutninger baseret på betingelserne. Betingede sætninger udføres sekventielt, når der ikke er nogen betingelse omkring sætningerne. Hvis du sætter en betingelse for en blok af sætninger, kan udførelsesflowet ændres baseret på det resultat, der evalueres af betingelsen. Denne proces kaldes beslutningstagning i 'C'.

I modsætning til løkker i C der gentager kode, betingede udsagn vælger én sti.

I 'C'-programmering er betingede udsagn mulige ved hjælp af følgende to konstruktioner:

  1. Hvis udsagn
  2. If-else-sætning

Det kaldes også forgrening, da et program bestemmer, hvilken sætning der skal udføres baseret på resultatet af den evaluerede tilstand.

Hvis udsagn

Det er en af ​​de stærke betingede erklæringer. If-sætningen er ansvarlig for at ændre strømmen af ​​eksekvering af et program. Hvis sætning bruges altid med en betingelse. Betingelsen evalueres først, før der udføres en erklæring inde i brødteksten af ​​If. Syntaksen for if-sætning er som følger:

 if (condition) 
     instruction;

Betingelsen evalueres til enten sand eller falsk. Sand er altid en værdi, der ikke er nul, og falsk er en værdi, der indeholder nul. Instruktioner kan være en enkelt instruktion eller en kodeblok omgivet af krøllede klammeparenteser { }.

Følgende program illustrerer brugen af ​​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;
}

Output:

num1 is smaller than num2

Ovenstående program illustrerer brugen af ​​if-konstruktion til at kontrollere lighed mellem to tal.

If-sætningsflowdiagram i C

  1. I ovenstående program har vi initialiseret to variable med henholdsvis num1, num2 med værdien 1, 2.
  2. Derefter har vi brugt if med et testudtryk til at kontrollere, hvilket tal der er det mindste, og hvilket tal der er det største. Vi har brugt et relationelt udtryk i if-konstruktion. Da værdien af ​​num1 er mindre end num2, vil betingelsen evalueres til sand.
  3. Således vil den udskrive erklæringen inde i blokken af ​​If. Herefter vil styringen gå uden for blokken, og programmet vil blive afsluttet med et vellykket resultat.

Relationel Operatorer

C har seks relationelle operatorer, der kan bruges til at formulere et boolsk udtryk til at træffe en beslutning og teste betingelser, som returnerer sandt eller falsk:

  • < — mindre end
  • <= — mindre end eller lig med
  • > — større end
  • >= — større end eller lig med
  • == — lig med
  • != — ikke lig med

Bemærk, at den lige test (==) er forskellig fra opgaveoperatøren (=), fordi det er et af de mest almindelige problemer, som en programmør står over for ved at blande dem.

For eksempel:

int x = 41;
x =x+ 1;
if (x == 42) {
   printf("You succeed!");}

Output:

 You succeed

Husk, at en betingelse, der evalueres til en værdi, der ikke er nul, betragtes som sand.

For eksempel:

int present = 1;
if (present)
  printf("There is someone present in the classroom \n");

Output:

There is someone present in the classroom

If-Else-erklæringen

C If-Else-sætningsflowdiagram

If-else-sætningen er en udvidet version af If. Den generelle form af if-else er som følger:

if (test-expression)
{
    True block of statements
}
Else
{
    False block of statements
}
Statements;

I denne type konstruktion, hvis værdien af ​​test-udtryk er sand, så vil den sande blok af udsagn blive udført. Hvis værdien af ​​test-udtryk er falsk, så vil den falske blok af udsagn blive udført. Under alle omstændigheder vil kontrollen efter udførelsen automatisk blive overført til de udsagn, der vises uden for If-blokken.

Følgende programmer illustrerer brugen af ​​if-else konstruktionen:

Vi vil initialisere en variabel med en vis værdi og skrive et program for at bestemme, om værdien er mindre end ti eller større end ti.

Lad os begynde.

#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;
}

Output:

The value is greater than 10

Eksempel på output af If-Else-sætning i C

  1. Vi har initialiseret en variabel med værdien 19. Vi skal finde ud af, om tallet er større eller mindre end 10 ved hjælp af et 'C'-program. For at gøre dette har vi brugt if-else-konstruktionen.
  2. Her har vi givet en betingelse num<10, fordi vi skal sammenligne vores værdi med 10.
  3. Som du kan se, er den første blok altid en sand blok, hvilket betyder, at hvis værdien af ​​test-udtryk er sand, vil den første blok, som er If, blive udført.
  4. Den anden blok er en anden blok. Denne blok indeholder de sætninger, som vil blive udført, hvis værdien af ​​test-udtrykket bliver falsk. I vores program er værdien af ​​num større end ti, derfor bliver testbetingelsen falsk, og ellers udføres blokeringen. Således vil vores output være fra en anden blok, som er "Værdien er større end 10". Efter if-else vil programmet afsluttes med et vellykket resultat.

I 'C'-programmering kan vi bruge flere if-else-konstruktioner inden i hinanden, som omtales som nesting of if-else-sætninger.

Betingede udtryk

En anden måde at udtrykke en if-else-sætning på er ved at introducere ?:-operatoren. I et betinget udtryk har ?:-operatoren kun én sætning tilknyttet if- og else-sætningen.

For eksempel:

#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;}

Output:

y =2

Indlejrede If-else-erklæringer

Når en række beslutninger er påkrævet, bruges indlejret if-else. Nesting betyder at bruge én if-else-konstruktion i en anden.

Lad os skrive et program for at illustrere brugen af ​​indlejret 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;
}

Output:

The value is:1

Ovenstående program kontrollerer, om et tal er mindre eller større end 10, og udskriver resultatet ved hjælp af indlejret if-else-konstruktion.

Indlejret If-else-sætning i C

  1. For det første har vi erklæret en variabel num med værdi som 1. Derefter har vi brugt if-else konstruktion.
  2. I den ydre if-else-funktion kontrollerer den givne betingelse, om et tal er mindre end 10. Hvis betingelsen er sand, så og kun da, vil den indre blok udføres. I dette tilfælde er betingelsen sand, derfor behandles den indre blok.
  3. I den indre blok har vi igen en betingelse, der kontrollerer, om vores variabel indeholder værdien 1 eller ej. Når en betingelse er sand, behandler den If-blokken, ellers behandler den en else-blok. I dette tilfælde er betingelsen sand, derfor udføres If-blokken, og værdien udskrives på outputskærmen.
  4. Ovenstående program vil udskrive værdien af ​​en variabel og afslutte med succes.

Prøv at ændre værdien af variabel se hvordan programmet opfører sig.

BEMÆRK: I indlejrede if-else-konstruktioner skal vi være forsigtige med indrykningen, fordi flere if-else-konstruktioner er involveret i denne proces, så det bliver vanskeligt at finde ud af individuelle konstruktioner. Korrekt indrykning gør det nemt at læse programmet.

Indlejrede Else-if-udsagn

Indlejret Else-if-stige i C

Nested else-if bruges, når multipath-beslutninger er påkrævet.

Den generelle syntaks for, hvordan else-if-stiger er konstrueret i 'C'-programmering, er som følger:

 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;

Denne type struktur er kendt som en else-if-stige. Denne kæde ligner generelt en stige, derfor kaldes den også en else-if-stige. Testudtrykkene evalueres fra top til bund. Når et sandt testudtryk findes, udføres en tilknyttet sætning. Når alle n testudtryk bliver falske, udføres standard else-sætningen.

Lad os se det faktiske arbejde ved hjælp af et 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;
}

Output:

First class

Ovenstående program udskriver karakteren i henhold til karaktererne i en test. Vi har brugt else-if ladder-konstruktionen i ovenstående program.

  1. Vi har initialiseret en variabel med mærker. I else-if-stigestrukturen har vi givet forskellige betingelser.
  2. Værdien fra variabelmærkerne vil blive sammenlignet med den første betingelse, da det er sandt, at den erklæring, der er knyttet til den, vil blive udskrevet på outputskærmen.
  3. Hvis den første testbetingelse viser sig at være falsk, sammenlignes den med den anden betingelse.
  4. Denne proces fortsætter, indtil alle udtryk er evalueret, ellers vil kontrollen gå ud af else-if-stigen, og standardsætningen vil blive udskrevet.

Prøv at ændre værdien og bemærk ændringen i outputtet.

Ofte Stillede Spørgsmål

En if-else-funktion tester ethvert boolsk udtryk, inklusive intervaller og relationelle kontroller. skift ... sag sammenligner én variabel med faste konstante værdier og kompilerer ofte til en hurtigere hoptabel i mange tilfælde.

Det dinglende else-problem er tvetydigheden omkring, hvilke if-sætninger der hører til when-sætningerne, og som er indlejret uden parenteser. I C parres an else altid med den nærmeste ikke-matchede if-sætning. Tilføjelse af krøllede parenteser fjerner forvirringen.

Ja. Logiske operatorer forbinder betingelser: && kræver, at begge sider er sande, || kræver mindst én sand, og ! omvender et resultat. For eksempel, hvis (alder > 18 && borger) tester to betingelser sammen i én if.

Parenteser er valgfrie, når brødteksten er en enkelt sætning, så C kører kun den næste linje. For to eller flere sætninger kræves parenteser for at gruppere dem. Brug af parenteser er altid en sikker vane, der forhindrer logiske fejl.

Kortslutningsevalueringen stopper, så snart resultatet er kendt. Med && springer en falsk venstre side over højre side. Med || springer en sand venstre side over højre. Dette undgår unødvendigt arbejde og usikre operationer.

Ja. En else-if-stige evalueres fra top til bund og stopper ved den første sande betingelse. At placere brede betingelser før smalle betingelser kan skjule de smalle tilfælde, så sorter testene fra mest specifikke til mest generelle.

Ja. AI-kodningsassistenter udarbejder betingede blokke fra en kommentar, konverterer lange if/else-kæder til renere strukturer og markerer sandsynlige fejl, såsom at bruge = i stedet for ==. Test altid den genererede logik, før du stoler på den.

GitHub Copilot autofuldfører if-, else-if- og indbyggede betingelser fra dine kommentarer eller den omgivende kode. Den foreslår relationelle og logiske udtryk og kan tilføje manglende parenteser, selvom du bør gennemgå hvert forslag.

Opsummer dette indlæg med: