höchste/niedrigste Zahl mit if abfragen
-
Ich sagte nicht, daß es soooo komliziert ist und ist natürlich die elegantere Lösung.
for(int i = 0; i <= 29; i++) oder for(int i = 0; i < 30; i++) ok.
Die Anzahl der Arrayelemente entspricht dem Wert des ganzzahligen Ausdrucks (a[0], ..., a[n–1]) ist natürlich richtig, komischerweise funktionier das letzte trotzdem, also n auch und nicht nur n-1, aber vielleicht kann das mal jemand erklären.
Folgender Testversuch:AnsiString Ergebnis = ""; int zahl[3]; zahl[0] = 4; zahl[1] = 2; zahl[2] = 5; zahl[3] = 9; for (int i = 0; i <= 3; i++) Ergebnis = Ergebnis + IntToStr(zahl[i]) + "\n"; ShowMessage(Ergebnis);zeigt mir in einem mit [3] angegebenen Array 4 richtige Werte (0 - 3)

-
zahl[3] = 9;erzeugt bei dir undefiniertes Verhalten. Das bedeutet nicht, dass dein Programm abstürzt oder irgendwelche Fehlermeldungen kommen. Du beschreibst da einen Speicherbereich, der dir nicht gehört. Wenn dieser Bereich nicht weiter verwendet wird, passiert auch nichts (undefiniertes Verhalten).
-
warum nicht bei mir ?? Hab es wirklich so getestet.

werde es gleich noch mal versuchen.
-
nun habe ich zwar keine Fehlermeldung aber das letzte Array ist die selbe Zahl wie das vorletzte. Komischerweise hat es davor wirklich diese richtige Zahl angezeigt (Zufall ?)Aber richtig íst, wenn ich CodeGuard einschalte bekomme ich einen Hinweis.
Wollte die Richtigkeit von (a[0], ..., a[n–1]) nicht anzweifeln, hatte mich nur gewundert, das es trotzdem funktionierte.
-
Undefiniertes Verhalten bedeutet, dass Alles passieren kann (wirklichs Alles!). Also auch, dass dein Programm funktioniert.
-
Braunstein schrieb:
Undefiniertes Verhalten bedeutet, dass Alles passieren kann (wirklichs Alles!). Also auch, dass dein Programm funktioniert.
das ist richtig.