Ett logikfel är ett fel i ett program som gör att det fungerar felaktigt, men inte att det avslutas onormalt (eller kraschar). Ett logikfel ger oönskad utdata eller annat beteende, och kan vara svårt att hitta i ett program.

Logiska fel uppstår både i kompilerade och tolkade språk. Till skillnad från ett program med ett syntaxfel är ett program med logikfel ett giltigt program, men det uppför sig inte som avsett. Ofta är den enda ledtråden till förekomsten av logiska fel att programmet producerar felaktiga svar, även om de ibland kan identifieras med hjälp av statisk analys.

Felsökning redigera

Ett sätt att hitta denna typ av fel är att mata programmets variabler till en fil eller på skärmen för att fastställa felets läge i kod. Exempelvis kan man anropa en delfunktion på ett felaktigt sätt vilket ger felaktiga svar.

Exempel redigera

Detta exempel fungerar i C för att beräkna genomsnittet av två nummer innehåller ett logikfel. Det saknas en parentes i beräkningen, så det kompilerar och körs men ger inte det förväntade svaret på grund av operationsordning (division evalueras före addition).

float average(float a, float b)
{
  return a + b / 2;   /* should be (a + b) / 2 */
}

Se även redigera