Hvis ... Ellers erklæring i C forklaret

Betinget kodestrøm er evnen til at ændre den måde, et stykke kode opfører sig på baseret på visse betingelser. I sådanne situationer kan du bruge ifudsagn.

Det ifudsagn er også kendt som en beslutningstagning erklæring, da det gør en beslutning på baggrund af en given tilstand eller udtryk. Kodeblokken inde i ifudsagnet udføres, er betingelsen evalueret til sand. Koden inde i de krøllede seler springes dog over, hvis betingelsen evalueres til falsk, og koden efter ifudsagnet udføres.

Syntaks for en iferklæring

if (testCondition) { // statements }

Et simpelt eksempel

Lad os se på et eksempel på dette i aktion:

#include  #include  int main(void) { if(true) { printf("Statement is True!\n"); } return 0; }

Produktion:

Statement is True!

Hvis koden inden for parentes af ifudsagnet er sand, udføres alt inden for de krøllede seler. I dette tilfælde trueevalueres til sand, så koden kører printffunktionen.

if..else udsagn

I en if...elseerklæring, hvis koden i parentes af ifudsagnet er sand, udføres koden inden for parenteserne. Men hvis udsagnet inden for parentesen er falsk, elseudføres al kode inden for sætningens parenteser i stedet.

Selvfølgelig er eksemplet ovenfor ikke særlig nyttigt i dette tilfælde, fordi det truealtid evalueres til sandt. Her er en anden, der er lidt mere praktisk:

#include  int main(void) { int n = 2; if(n == 3) { // comparing n with 3 printf("Statement is True!\n"); } else { // if the first condition is not true, come to this block of code printf("Statement is False!\n"); } return 0; }

Produktion:

Statement is False!

Der er et par vigtige forskelle her. For det første stdbool.her det ikke inkluderet. Det er okay, fordi trueog falseikke bruges som i det første eksempel. I C, som i andre programmeringssprog, kan du bruge udsagn, der evalueres til sandt eller falsk i stedet for at bruge de boolske værdier trueeller falsedirekte.

Bemærk også betingelsen i parentesen af iferklæring: n == 3. Denne tilstand sammenlignes nog tallet 3. ==er sammenligningsoperatoren og er en af ​​flere sammenligningsoperationer i C.

Indlejret if...else

Det if...elseudsagn giver et valg der skal foretages mellem to muligheder. Men nogle gange skal du vælge mellem tre eller flere muligheder.

For eksempel returnerer tegnfunktionen i matematik -1, hvis argumentet er mindre end nul, +1, hvis argumentet er større end nul, og returnerer nul, hvis argumentet er nul.

Følgende kode implementerer denne funktion:

if (x < 0) sign = -1; else if (x == 0) sign = 0; else sign = 1;

Som du kan se, er en anden if...elseerklæring indlejret i elseudsagnet fra den første if..else.

Hvis xer mindre end 0, er den derefter signindstillet til -1. Imidlertid, hvis xikke er mindre end 0, if...elseudføres den anden sætning. Der, hvis xer lig med 0, signer også indstillet til 0. Men hvis xer større end 0, signer i stedet sat til 1.

I stedet for en indlejret if...elseerklæring bruger begyndere ofte en række ifudsagn:

if (x  0) { sign = 1; }

Mens dette fungerer, anbefales det ikke, da det er uklart, at kun en af ​​opgaveudtalelserne ( sign = ...) er beregnet til at blive udført afhængigt af værdien af x. Det er også ineffektivt - hver gang koden køres, testes alle tre betingelser, selvom en eller to ikke behøver at være det.

ellers ... hvis udsagn

if...elseudsagn er et alternativ til en række ifudsagn. Overvej følgende:

#include  int main(void) { int n = 5; if(n == 5) { printf("n is equal to 5!\n"); } else if (n > 5) { printf("n is greater than 5!\n"); } return 0; }

Produktion:

n is equal to 5!

Hvis betingelsen for iferklæringen evalueres til falsk, kontrolleres betingelsen for else...ifudsagnet. Hvis denne betingelse vurderes til sand, else...ifkøres koden inde i udsagnets krøllede seler.

Sammenligningsoperatører

Operatørens navn Anvendelse Resultat
Svarende til a == b Sandt hvis aer lig med b, falsk ellers
Ikke lig med a != b Sandt, hvis aikke er lig med b, ellers falsk
Bedre end a > b Sandt hvis aer større end b, falsk ellers
Større end eller lig med a >= b Sandt, hvis aer større end eller lig med b, ellers falsk
Mindre end a < b Sandt hvis aer mindre end b, falsk ellers
Mindre end eller lig med a <= b Sandt, hvis aer mindre end eller lig med b, falsk ellers

Logiske operatører

Vi vil måske have en smule kode til at køre, hvis noget ikke er sandt, eller hvis to ting er sande. Til det har vi logiske operatorer:

Operatørens navn Anvendelse Resultat
Ikke ( !) !(a == 3) True, hvis aer ikke lig med 3
Og ( &&) a == 3 && b == 6 Sandt, hvis aer lig med 3 ogb er lig med 6
Eller ( ||) a == 2 || b == 4 True if a is equal to 2 orb is equal to 4

For example:

#include  int main(void) { int n = 5; int m = 10; if(n > m || n == 15) { printf("Either n is greater than m, or n is equal to 15\n"); } else if( n == 5 && m == 10 ) { printf("n is equal to 5 and m is equal to 10!\n"); } else if ( !(n == 6)) { printf("It is not true that n is equal to 6!\n"); } else if (n > 5) { printf("n is greater than 5!\n"); } return 0; }

Output:

n is equal to 5 and m is equal to 10!

An important note about C comparisons

While we mentioned earlier that each comparison is checking if something is true or false, but that's only half true. C is very light and close to the hardware it's running on. With hardware it's easy to check if something is 0 or false, but anything else is much more difficult.

Instead it's much more accurate to say that the comparisons are really checking if something is 0 / false, or if it is any other value.

For example, his if statement is true and valid:

if(12452) { printf("This is true!\n") }

By design, 0 is false, and by convention, 1 is true. In fact, here’s a look at the stdbool.h library:

#define false 0 #define true 1

Mens der er lidt mere til det, er dette kernen i, hvordan booleaner fungerer, og hvordan biblioteket fungerer. Disse to linjer instruerer kompilatoren om at erstatte ordet falsemed 0 og truemed 1.