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é

Weet jij het antwoord?

/2500

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.  

Stel zelf een vraag

Ben je op zoek naar het antwoord die ene vraag die je misschien al tijden achtervolgt?

/100