Neues Buch "C++ von A bis Z" für die FAQ
-
Ich wünsche mir eh schon seit eh und je nen Forum "Buchbesprechung".
Auch wenn da nicht soviel los sein würde, hätten die Bücher doch mal ihre eigene Welt ...
-
Spacelord schrieb:
justchris schrieb:
Der Author der schon mit "C von A bis Z" das beste C-Buch aller Zeiten geschrieben hatte ....
Ich hab mit dem (Online-)Buch damals nur meine ersten MySQL Schritte gemacht und hab da irgendwie dunkel in Erinnerung dass der Beispielcode nen paar üble Memory Leaks hinterlässt.Nicht gerade nen Merkmal das ich dem besten C Buch aller Zeiten zuordnen würde.
Wenn man genauer nachschaut findet man da einiges was nicht stimmt oder unsauber ist.
-
justchris schrieb:
@elise: Geschmäcker sind ja zum Glück verschieden, für mich wäre die FAQ vom C++ auch die erste Anlaufstelle wenn ich nach Literatur über die C++ Programmierung suchen würde. Welche viele Unterforen würden denn Deiner Meinung nach viel besser geeignet sein als "C++" für ein C++ Buch?
*lach*
wenn ich in so einem forum ein buch suche, würde ich oben rechts den bücherlink drücken und diese bücher durchforsten.
vielleicht solltest du marc++s deinen buchtip senden, damit er ihn dort aufnimmt
aber pronix habe ich oft selber schon verlinkt. obwohl das c tutorial fehler enthält.
-
@elise: Der Bücherlink oben rechts ist mir bis jetzt nie aufgefallen.
Den Buchvorschlag an marc++s zu senden ist eine gute Idee, danke.Ich vermisse etwas die vielen Unterforen die besser geeignet wären *grins.
Sind denn die Fehler bei dem C-Buch immer noch drinne? Ich meine ist ja schliesslich schon die 2.Auflage mittlerweile.
Hier geht es zwar hauptsächlich um das C++ Buch, aber an die Kritiker hier:
Kennt ihr ein besseres C-Buch auf deutsch? Laut Amazon ist das mit Abstand das Beste.
-
Schau dir mal hier die Limits für Ganzzahlen an!:
http://www.galileocomputing.de/openbook/c_von_a_bis_z/c_007_010.htm#Xxx999328
und
http://www.pronix.de/pronix-669.htmlIch hab die Fehler bereits am 10. August beim Verlag bemängelt. Als Antwort hieß es, daß sie meinen Fehlerbericht dem Autor zukommen lassen. Seitdem hat sich weder auf der Seite des Autors noch auf der Seite des Verlags was geändert!
Sonderlich sinnvoll nutzen die das Medium Internet jedenfalls nicht, wenn die ihre Fehler nicht umgehend korrigieren!
-
Schau dir mal hier die Limits für Ganzzahlen an!:
Was ist denn daran falsch?
-
foobar23 schrieb:
Was ist denn daran falsch?
signed char geht z.B. von -128 bis 127
-
foobar23 schrieb:
Schau dir mal hier die Limits für Ganzzahlen an!:
Was ist denn daran falsch?
Nichts. Ausser dass der Zusatz (32Bit: zahl) imho wenig sinnvoll ist.
-
Mir ist noch nicht ganz klar warum ein unsiged char von -128 bis 127 gehen soll und nicht von -127 bis 127.
Ist nicht das letzte Bit einfach nur für das Vorzeichen da?
Ich dachte immer es wäre so:
11111111 = 64 + 32 + 16 + 8 + 4 + 2 + 1 = -127
01111111 = 64 + 32 + 16 + 8 + 4 + 2 + 1 = 127
-
0 ist die erste positive Zahl

0 bis 127 => n=128
-1 bis -128 => n=128
-
Es ging mit nicht darum wie viele Zahlen man darstellen kann sondern um den Wertebereich, also was ist die kleinste und was die größte Zahl die man mit signed char darstellen kann. Bei unsigned chat kann man 256 Zahlen darstellen und der Wertebereich geht von MIN = 0 bis MAX = 255.
-
Genau, und mit signed kann man auch 256 Zahlen darstellen, daher von MIN = -128 zu MAX = 127, denn Null ist auch eine Zahl..
-
Und wie sieht dann die -128 binär aus? Alle Bits auf 1 wär dann ja die -127.
-
*unsinn*
-
Hmm, sehr interessant wenn man der Sache mal auf den Grund geht. Ich werde das heute mal in der Praxis testen.
-
justchris schrieb:
Und wie sieht dann die -128 binär aus? Alle Bits auf 1 wär dann ja die -127.
10000001 ist -127
10000000 ist -128
11111111 ist -1Gute Stichworte: Zweierkomplement, Zahlenkreis.
-
Dankeschön jetzt habe auch ich es verstanden.
Im C++ Buch von Jügen Wolf sind die Wertebereiche richtig angegeben. Da steht aber auch noch das ein char bzw. signed char auch von 0-255 gehen kann, dies sei aber compilerabhängig, ansonsten hat er hier auch den Wertebereich von -128...+127 angegeben.
-
justchris schrieb:
Im C++ Buch von Jügen Wolf sind die Wertebereiche richtig angegeben.
"Richtig" im Sinne von einer speziellen Architektur. Die Angaben in "C von A bis Z" sind auch richtig. Da halt im Sinne dessen was der C Standard an Mindestbereichen fordert. Und eine Architektur muss ja nicht zwangsweise im Zweierkomplement rechnen, deswegen stimmt -127 - +127 (für signed char) durchaus.
justchris schrieb:
Da steht aber auch noch das ein char bzw. signed char auch von 0-255 gehen kann, dies sei aber compilerabhängig, ansonsten hat er hier auch den Wertebereich von -128...+127 angegeben.
Bei einem char (ohne signed oder unsigned) bleibt es dem Compiler überlassen, ob er diesen Typ nun als signed oder unsigned Typen betrachten will. char verhält sich an dieser Stelle nicht wie in oder long.
-
Um jetzt mal darauf zu antworten, TactX sowie Jürgen Wolf haben natürlich Recht!
Der C99 Standard definiert tatsächlich die Limits so, wie im Buch, siehe z.B. hier:http://www.dinkumware.com/manuals/default.aspx?manual=compleat&page=limits.html
Allerdings muß sich der Autor des Buches durchaus gefallen lassen, daß er nicht explizit erwähnt, daß diese C99-Limits nur bei höchstens 10 - 20% der heutzutage üblichen Compiler Verwendung finden!
Wenn man sich mal die limits.h bei Visual C++ 2005 Express, Turbo C++ 2006 Explorer, MinGW, Linux (also gcc) oder auch meiner Vergangenheit (zwei verschiedene Amiga-Compiler) ansieht, dann implementieren alle durch die Bank das Zweierkomplement. Bei Apple sieht es auch nicht anders aus, denn deren hauseigene Entwicklungsumgebung "Xcode" benutzt ja ebenfalls GCC und in deren Dokumentation ist explizit die Rede vom Zweierkomplement:GCC supports only two's complement integer types, and all bit patterns are ordinary values.
zu finden hier:
Deshalb am besten in der endgültigen Buchversion darauf hinweisen, daß sich in der Praxis die Compiler nicht an die C99-Vorgaben halten, sondern durchweg das Zweierkomplement implementieren und von daher am Besten beide Auflistungen ins Buch integrieren, eine für die Theoretiker und eine für die Praktiker!
Solange nur die jetzige Tabelle im Buch ist, bleibt es ungenau, wenn man nur mal eben die Zahl nachschlagen will, denn bei den meisten Lesern entspricht es nunmal nicht der Realität. Und wer schlägt schon in der eigenen limits.h nach, wenn da eine groß-sichtbare Tabelle im Buch ist? Zum Nachschlagen ist diese Tabelle für die Mehrheit der Praktiker inaktzetabel
-
Ich denke der Beitrag hier kann geschlossen werden. Was den Fehler im C-Buch angeht, denke ich es war nur ein Tippfehler, denn in der ausführlichen Beschreibung unter http://www.pronix.de/pronix-666.html hat er es wieder richtig beschrieben, genauso wie in seinem neuen C++ Buch.
Es war aber trotzdem sehr interessant mal wieder den Unterschied zwischen Einer- und Zweierkomplement unter die Auge gerieben zu bekommen. Halte auch weiterhin die beiden Bücher für die beste deutsche Einstiegsliteratur in C und C++.
Gruß Chris