Uninitilisierter Typ
-
Hi,
ich habe gerade eben in dem Buch "The C Programming Language", was ja oft empfohlen wird, folgendes Beispiel entdeckt:int strlen(char s[]) { int i; while (s[i] != '\0') ++i; return i; }
Ich wage zu bezweifeln, dass das heute noch gültig ist, die Variable i einfach uninitialisiert zu benutzen. Der Compiler gibt ebenfalls eine Warnung aus.
Da frage ich mich gleich, weshalb ich von einem veraltetem Buch lernen soll, das aus heutiger Sicht, sogar falsches lehrt...Was denkt ihr dazu?
L. G.
Steffo
-
In meiner deutschen Ausgabe (kein ANSI) steht noch ein
i = 0;
Welche Ausgabe, Auflage hast du?
-
Steht nicht wirklich dabei.
Ich hab die englische Ausgabe:Published by Prentice-Hall in 1988
ISBN 0-13-110362-8 (paperback)
ISBN 0-13-110370-9Das war übrigens nicht das einzige verkehrte Beispiel.
Ganz am Anfang ist da ein Hello World Beispiel:#include <stdio.h> main() { printf("hello, world\n"); }
L. G.
Steffo
-
Ja, da ist ein Fehler in der zweiten englischen Ausgabe. Glückwunsch. Schreib an K&R. Bzw. an K, da R schon tot ist.
Dein zweites Beispiel ist nach C89 aber (fast) korrekt* und auf diesen Standard bezieht sich das Buch. So vermeidet man, auf den ersten Seiten gleich zu viel erklären zu müssen. Das Buch wird immer noch empfohlen, da
1. Es trotz eines Fehlers (es folgen noch viele weitere strlen-Varianten und die sind alle richtig) das beste Buch ist
2. C89 immer noch der C-Standard ist, da am verbreitetsten.
3. Wenn man denn einen C99 oder gar einen C11 Compiler hat, dann ist es auch kein großer Sprung. Dann liest man sich die paar Änderungen durch und gut ist.*: Jeder Compiler wird hier korrekten Code erzeugen.
-
Alles klar! Ich werd' einfach zu Jürgen Wolf Bücher greifen.
-
-
Lieber nicht.
Schwachfug schon nach Lektüre der Eingangspassagen, wie
"Wird ein Wert zugewiesen, spricht man von einer Definition."
Und wenn kein Wert zugewiesen wird, ist es keine Definition oder was?
Oder verstehe ich bloß das österreichische Deutsch nicht richtig?
-
Steffo schrieb:
Published by Prentice-Hall in 1988
ISBN 0-13-110362-8 (paperback)
ISBN 0-13-110370-9Es gibt ein Errata beim 'alten' K&R-Arbeitgeber:
-
Wenn man Glück hat, liegt i unterhalb der Arraylänge.
-
Wutz schrieb:
Es gibt ein Errata beim 'alten' K&R-Arbeitgeber: