FEHLER: Steuerung erreicht Ende von nicht-void-Funktion /
Verstehe nicht, warum ich bin immer die Warnung, dass "die Kontrolle kann erreicht Ende von nicht-void-Funktion." Irgendwelche Vorschläge?
Hier ist mein code:
long double geo_fn(long reps, int seed) {
double x, y, pythag_sum, total = 0, inside = 0;
default_random_engine engine(seed);
uniform_real_distribution<double>dist(0,1);
for(int i = 0; i< reps ;i++){
x = dist(engine);
y = dist(engine);
pythag_sum = (x*x)+(y*y);
if (pythag_sum <= 1){
inside += pythag_sum;
total += pythag_sum;
}
else {
total += pythag_sum;
}
return (inside/total)/10;
}
}
InformationsquelleAutor Tyler | 2013-09-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie rufen Sie die Funktion mit einem ersten argument von
0
die Schleife wird nie ausgeführt, und diereturn
Aussage ist so nie erreicht. Fallen das Ende eines nicht-void
Funktion ist undefiniert Verhalten.Meine persönliche Vermutung ist, dass die
return
Aussage gemeint war, um eine Ebene nach oben, D. H., in der out-block: dies würde garantieren, dass die Funktion immer einen Wert zurückgibt und die Warnung verschwinden würde.InformationsquelleAutor Dietmar Kühl
müssen Sie sicherstellen, dass,unabhängig von Ihren Erwartungen, dass es immer etwas zu kehren, da Sie erklärt Ihre Funktion den Rückgabetyp nicht void.
für diesen code benötigen Sie eine return-Anweisung vorkommen, dass in den "else" - Fall
wird es sein:
im Falle einer "for" - Schleife, gibt es eine chance, dass die Schleife bricht bei "ich < _nextSlot", ohne tatsächlich wieder etwas. Der compiler kann ich dir nicht sagen. so werden Sie brauchen, um eine return-Anweisung zu erfassen Fall, wo die "for" - Schleife "nie ausgeführt".
dann ist dies nur ein letztes Beispiel, die beide kombinieren:
InformationsquelleAutor Molegrammer
Stellen Sie sicher, dass Sie eine ungültige parameter-check vor der for-Schleife. Sicherstellen, dass die Funktion einen Fehler zurück-code aus, wenn einer der übergebenen Parameter einen ungültigen Wert hat.
InformationsquelleAutor GH14