Hét vraag- en antwoordplatform van Nederland

hoe werkt de opdracht 'default' in de taal C (arduino)?

ik ben net begonnen aan de cursus C van Arduino.

in de schakelopdracht (switch) kom ik de regel tegen:
default : { State = 1; break; }
dit is onderdeel van een meer keuze schakelaar.
als je vooraf de variabele State=1 geeft, zou dit volgens mij niet meer nodig zijn, ook kan je met state = 1; break; gewoon uit de lus stappen.

waarom toch deze contructie?
wat is het voordeel tov vooraf een waarde meegeven?

groeten, Dré

Verwijderde gebruiker
10 jaar geleden
in: Software
1.1K

Heb je meer informatie nodig om de vraag te beantwoorden? Reageer dan hier.

Het beste antwoord

Er staat waarschijnlijk iets in de trant van:

switch (expressie)
{
case 1: {doeiets; break;}
case 2: {doeietsanders; break;}
case 3: {doenogwatanders; break;}
/* enzovoort */
default: {state=1; break;}
}

(Excuseer eventuele syntax terrors, het is al eeuwen geleden sinds ik mijn laatste C-programma heb geschreven.)

Dit betekent: als de expressie niet 1 is, niet 2 is, niet 3 is enzovoort, dan wordt "ten einde raad" datgene uitgevoerd wat achter het label default: staat.

In bovenstaand voorbeeld wordt state=1; alleen uitgevoerd wanneer de default-tak wordt bereikt.

Jouw alternatief is om state=1; helemaal bovenaan te zetten, nog vóór de switch. En dan bij default: de state=1; weg te halen.

Dit heeft twee gevolgen.

Ten eerste: state wordt nu *altijd* op 1 gezet voordat je de switch ingaat. Misschien wil je dat helemaal niet. Misschien is één van de case-opdrachten afhankelijk van de voorgaande waarde van state.

Ten tweede: ook als het voorgaande niet opgaat, wordt state nu *altijd* op 1 gezet, terwijl je dat misschien alleen maar in een uitzonderingssituatie wilt doen. Je programma voert dan een opdracht uit die in het merendeel van de gevallen zinloos is. Als je state=1; in de default: had laten staan, was die opdracht alleen dan uitgevoerd wanneer het ook werkelijk nuttig is.

Voor een stuk code dat eenmalig wordt uitgevoerd maakt dat weinig uit. Als jouw code in een lus zit die een paar miljoen keer wordt uitgevoerd, merk je het verschil.
 
(Lees meer...)
Cryofiel
10 jaar geleden
Verwijderde gebruiker
10 jaar geleden
dank je wel, dit is wat ik weten wilde.

Weet jij het beter..?

Het is niet mogelijk om je eigen vraag te beantwoorden Je mag slechts 1 keer antwoord geven op een vraag Je hebt vandaag al antwoorden gegeven. Morgen mag je opnieuw maximaal antwoorden geven.

0 / 5000
Gekozen afbeelding