ich eine einfache Skalarprodukt-Funktion auf einem mbed LPC1768 schrieb:Funktion lokale Variable zwischen Funktion weiterhin bestehen ruft
float dotProduct(float a[], float b[], int length){
float sum;
int i;
for (i = 0; i < length; i++){
sum = sum + a[i]*b[i];
}
return sum;
}
Ich habe zwei Anrufe dotProduct in einer Reihe in meinem Programm, das (zum Testen) dot zwei 128-Element 1-Vektoren ({1,1,1 ... 1}) und drucken sie seriell. Also das erwartete Ergebnis sollte nur 128 und 128 sein. Die Variable sum
scheint jedoch zu bestehen, weil ich 128 und 256 bekomme. Außerdem, wenn ich die float sum
Deklaration zu float sum = 0
ändere, bekomme ich das gewünschte Ergebnis von 128 und 128. Die Variable sum
ist nicht statisch, warum bleibt es zwischen Funktionsaufrufen bestehen? Danke
Sie eine nicht initialisierte Variable -> Ergebnisse in undefinierten Verhalten. –