C voert code niet alleen lineair uit. Het maakt keuzes. De kern van elke beslissing die een C-programma neemt, is de Booleaanse expressie. Of je nu een ‘if’-instructie of een ‘while’-lus gebruikt, de logica komt op één ding neer: is deze voorwaarde waar of onwaar?
Laten we naar een eenvoudig voorbeeld kijken.
Hier vraagt het programma om invoer. Het slaat dat getal op in variabele b. Vervolgens wordt een voorwaarde gecontroleerd. De betreffende Booleaanse expressie is (b < 0). C beoordeelt dit. Als het resultaat waar is, drukt het programma af: "De waarde is negatief". Als de waarde onwaar is, doet het programma niets. Het blijft stil.
De regel is eenvoudig. Als de expressie resulteert in True, voert C de enkele regel uit die onmiddellijk volgt op de if. Of, als u accolades {} gebruikt, wordt het hele blok binnenin uitgevoerd. Als de expressie False is, slaat C die regel of dat blok geheel over.
Maar programma’s behandelen zelden slechts één uitkomst. Vaak moet u ook met nul- of positieve getallen omgaan.
Deze structuur gebruikt 'else if' en 'else' om de resterende gevallen te dekken. Vervolgens wordt op nul getest. Als dat niet lukt, wordt ervan uitgegaan dat de waarde positief is.
Soms worden beslissingen ingewikkeld. Mogelijk moet u meerdere voorwaarden tegelijk controleren.
Deze verklaring leest als natuurlijke taal. Als x gelijk is aan y EN j groter is dan k, stel dan z in op 1. Stel anders q in op 10. Dit soort uitspraken zul je gedurende je hele C-carrière gebruiken. De meeste beslissingen zullen eenvoudig zijn. Soms worden ze complex.
Let goed op de syntaxis. Een veel voorkomende valkuil voor beginners is het verwarren van opdracht met vergelijking.
C gebruikt == om te testen op gelijkheid.
C gebruikt = om een waarde toe te wijzen aan een variabele.
Als je ze door elkaar haalt, ontstaan er bugs die moeilijk te vinden zijn. Men stelt een waarde vast. De ander controleert een voorwaarde. Ze zijn niet uitwisselbaar.
C vertrouwt ook op specifieke operators voor logische bewerkingen. Het && -symbool vertegenwoordigt een Booleaanse AND-bewerking. Het zorgt ervoor dat beide kanten van de voorwaarde waar moeten zijn.
Hier is een korte referentie voor alle Booleaanse operatoren in C:
- == : gelijkheid
- != : ongelijkheid
- < : minder dan
- > : groter dan
- <= : kleiner dan of gelijk aan
- >= : groter dan

Logica in een lus in C: while, do-while en for
Het gebruik van een while -lus is eenvoudig. Het weerspiegelt de eenvoud van een standaard if-statement. Beschouw dit fragment eens:
terwijl (a < b) { printf("%d\n", a); een = een + 1; }
Deze structuur voert de twee lijnen binnen de accolades herhaaldelijk uit. Het stopt alleen als a groter is dan of gelijk is aan b. De logica is lineair. Controleer de staat. Voer lichaam uit. Herhalen.
C biedt ook een doe-terwijl -constructie. In tegenstelling tot de standaard while-lus, controleert deze de voorwaarde na de eerste uitvoering. Dit garandeert dat het codeblok minstens één keer wordt uitgevoerd.
Opmerking: in het bovenstaande voorbeeld wordt een if-instructie binnen de functie gebruikt. Een echte do-while zou het lichaam inpakken en aan het einde de toestand controleren.
De for-lus als afkorting
De for-lus is in wezen een gecomprimeerde while -instructie. Het bundelt initialisatie, testen en ophogen op één regel.
Kijk eens naar deze standaard while-lus:
x=1;
terwijl (x<10) {
bla bla bla
x++; // x++ is identiek aan x=x+1
}
Je kunt dit herschrijven als een for-lus:
voor(x=1; x<10; x++) { bla bla bla }
De componenten zijn duidelijk. x=1 initialiseert. x<10 testen. x++ stappen. De for-lus condenseert ze gewoon. U bent niet beperkt tot eenvoudige variabelen. Je kunt complexe logica in die slots stoppen.
Neem dit voorbeeld:
a=1;
b=6;
terwijl (a
Het wordt:
for (a=1,b=6; a < b; a++,printf("%d\n",a));
Het werkt. Het is ook verwarrend. De komma-operator staat meerdere instructies toe in de initialisatie- en ophogingssecties. In het testgedeelte werkt het niet. Veel C-ontwikkelaars houden van deze compactheid. Anderen vinden het onleesbaar. Ze breken het op. Beide benaderingen zijn geldig. Kies op basis van wie de code later zal onderhouden.
Het gevaar van = vs. == in C
De == operator veroorzaakt hoofdpijn. Ontwikkelaars typen vaak per ongeluk een enkele = in Booleaanse expressies. De compiler accepteert beide. Het gedrag verschilt enorm.
In C resulteren Booleaanse expressies in gehele getallen. Nul is onwaar. Elk geheel getal dat niet nul is, is True. Dit betekent dat elk geheel getal binnen een Booleaanse context kan bestaan.
Overweeg deze wettelijke C-code:
if (a) { printf("Niet-nul"); }
Als a iets anders is dan 0, wordt het blok uitgevoerd.
Kijk nu naar als (a=b). Dit vergelijkt geen waarden. Het wijst b toe aan a en test vervolgens de nieuwe waarde van a. Als b 0 is, is de voorwaarde False. Als b iets anders is, is het waar. De variabele a verandert. Dit is waarschijnlijk niet wat je bedoelde. Je bedoelde waarschijnlijk == ter vergelijking.
Deze functie is niet nutteloos. Het heeft geldige gebruiksscenario's. Maar het is een valstrik. Wees voorzichtig met uw = en == gebruik. Eén personage verandert de logica van vergelijking naar toewijzing.

































