Variant 1: De skiljer sig från varandra. Variant 1: Testa båda if-satserna Det beror på , för det mesta finns det ingen skillnad allts om du skriver bara if eller om du kombinera if med else if . ( det handlar om det så kallad att följa språkets regler ) . Vad skiljer dessa varianter av if åt?
if(villkoret är detta)
{
gör detta;
}
if(villkoret istället är detta)
{
gör detta;
}
Variant 2:
if(villkoret är detta)
{
gör detta;
}
else if(villkoret istället är detta)
{
gör detta;
}
Är någon av dem sämre än den andra på något sätt eller är det bara en smaksak på vilket sätt man vill skriva satsen?Sv: Vad skiljer dessa varianter av if åt?
Om vi säger så här:
if(villkor1)
sats1;
else if(villkor2)
sats2;
resp.
if(villkor1)
sats1;
if(villkor2)
sats2;
Så är det en korrekt C/C++ - kod. De är ekvivalenta mot det du skrev.
Om vi nu säger att
villkor1 = (a>7);
villkor2 = (b>5);
så ska du se att satserna blir olika.
det finns fyra fall:
1: a<=7, b<=7 -> villkor1=false, villkor2=false
2: a<=7, b>7 -> villkor1=false, villkor2=true
3: a>7, b<=7 -> villkor1=true, villkor2=false
4: a>7, b>7 -> villkor1=true, villkor2=true
fall 1: ingen av sats1 eller sats2 att körs i något av fallen.
fall 2: i första skrivsättet kommer först villkor1 kollas (=false), och sedan EFTERSOM villkor1 var false, kommer villkor2 kollas, som blir sann. I andra skrivsättet kommer först villkor1 kollas, och sedan villkor2. I båda fallen kommer sats2 utföras
fall 3: i första skrivsättet kommer villkor1 kollas, och sedan behövs inget annat kollas - man kör sats1. i andra skrivsättet kollas första, då körs sats1, sen kollas andra men då körs inte sats2. Alltså utförs sats1 i båda fallen.
fall4: i första skrivsättet kollas först villkor1, som blir sant, sen körs sats1 och det är klart. I andra skrivsättet kollas först vilkor1, kör sats1, kollar vilkor2, kör sats2. Här uppträder alltså en egentlig skillnad. i andra skrivsättet kommer båda att köras.
Det beror alltså på om villkor1 kan vara sann samtidigt som villkor2.Sv: Vad skiljer dessa varianter av if åt?
Variant 2: Om den första if-satsen är sann testas inte andra if-satsen. Den här metoden är att föredra framför den tidigare om bara en av if-satserna ska vara sann (snabbare om första if-satsen är sann).Sv: Vad skiljer dessa varianter av if åt?
Om du du har lagt if satserna i en funktion , och sedan anropas funktionen så läses allt från första raden . om du använder bara if utan if-else så exekverar programmet första if , om det är sant utförs alla satser som är anknytna till första if , och sedan hoppar markören till nästa if ( eller rad ) utanför första if , om det falskt , också , hoppar markören till nästa if-satsen .
Procuduren uppreppas tills alla if-satser ( och eventuellt all programkod ) som finns inne i funktionen har exekverats färdigt .
Att använda bara if utan else , används ofta när man vill utföra flera alternativ som är oberoende av varandra i en enda exekvering .