Logische fout
Een logische fout (of logische programmeerfout) is een fout in de broncode van een programma die leidt tot onjuist of onverwacht gedrag. Het is een type runtimefout die eenvoudigweg de verkeerde uitvoer kan produceren, of ervoor kan zorgen dat een programma tijdens het uitvoeren vastloopt.
Veel verschillende soorten programmeerfouten kunnen logische fouten veroorzaken. Als u bijvoorbeeld een waarde aan de verkeerde variabele toewijst, kan dit een reeks onverwachte programmafouten veroorzaken. Ook het vermenigvuldigen van twee getallen in plaats van ze bij elkaar op te tellen kan ongewenste resultaten opleveren. Zelfs kleine typefouten die geen syntaxisfouten veroorzaken, kunnen logische fouten veroorzaken. In het onderstaande PHP-codevoorbeeld kan de instructie if een logische fout veroorzaken, omdat het enkele gelijkteken (=) een dubbel gelijkteken (==) had moeten zijn.
Onjuist: if ($i=1) { ... }
Juist: if ($i==1) { ... }
In PHP betekent "==" "is gelijk aan", terwijl "=" "wordt" betekent. Daarom geeft de onjuiste instructie if altijd TRUE terug, omdat het toewijzen van 1 aan de variabele $i een TRUE-waarde teruggeeft. In de juiste code geeft de instructie if alleen TRUE terug als $i gelijk is aan 1. Omdat de syntaxis van de onjuiste code echter geldig is, veroorzaakt deze geen syntaxisfout en wordt de code zonder problemen gecompileerd. De logische fout wordt mogelijk pas tijdens runtime opgemerkt. Omdat logische fouten vaak in de broncode verborgen zijn, zijn ze meestal moeilijker te vinden en te debuggen dan syntaxisfouten.
Test je kennis