[C] printf notwendig? / zählen zur 16.777.216

ohoo

neue Entwicklung:
Mit dem Pelles C Compiler bekomme ich jetzt auch bei Zahlen ab 16.777.217 eine Endlos-Schleife

Mit dem Borland Compiler (Version 5.irgendwas) war das aber unter Garantie nicht so.

Wie auch immer - in dieser Hinsicht habt ihr mich schon um einiges weiter gebracht.


Jetzt wäre noch das printf-Problem sehr interessant


shutdown
 
moin


Liess mal Beitrag Nr. 20 da hatte ich das selbe Problem mit dem Visual Studio.

Und zu dem printf hab ich auch schon was geschrieben.


mfg
umbrasaxum
 
Ja aber is doch dann irgendwie unsinnig!

Zitat aus dem Skript zu unserer Programmiervorlesung:

float: 32 bits 3,4x10^-38 to 3,4x10^38


Wieso erfinde ich eine Variablenart mit einem riesigen Zahlenbereich, wenn sie dann nur bis 16.777.216 in der Lage ist, überhaupt etwas zu tun? ? ?

shutdown
 
Zu dem printf fällt mir noch ein:

Hast du da mal Debugausgaben reingebaut, um zu sehen, wieviel Zeilen er wirklich liest?
Mir fällt noch ein, dass ohne Angabe von b oder t bei fopen eine globale Variable "_fmode" bestimmt, ob eine Text- oder Binärdatei gelesen werden soll. Evtl. trifft das Lesen (das Problem ist beim Lesen, nicht beim Schreiben?) auf ein EOF (26 dezimal glaub ich) und bei Text-Modus wird da abgebrochen.

Zu der Sinnhaftigkeit von Floats:
Bei floats ging es einfach darum, mit grösseren Zahlen rechnen zu können. Wenn man alle Stellen genau haben will, könnte man ja integer nehmen. Wenn man da aber wirklich riesige Zahlen hat (10^95), dann hast du da eine mörderisch grosse Variable. Und irgendwo muss da ja auch ein gemeinsamer Nenner sein: Wer bestimmt die grösste erlaubte Variable? Oder soll man 10 verschieden Zahl-Typen einführen, damit nicht alle genauso viel Speicher belegen?

float ist da einfach ein Kompromiss: Man kann zwar mit fetten Zahlen rechnen, aber nur bis zur 6. Nachkommastelle, mehr ist bei 32bit einfach nicht zu machen.

Es gibt da draussen (also im Internet) bestimmt einige Libraries, die Zahlen als String darstellen und wirklich alle Stellen durchziehen, aber selbst das deckt nicht alles ab. Zahlen wie Pi kann man mit 'nem Computer einfach nicht genau darstellen, nur annähernd.
 
Die Datei hat mehrere Millionen Einträge!

Er kann einfach nicht auf ein EOF stoßen... (nicht nach 2 Sekunden)

Nein, das mit dem DebugModus hab ich noch nicht ausprobiert - kann ich im Moment leider auch nicht, da ich diese und nächste Woche keinen Zugriff auf meine Skripte hab...
 
moin


Warum nicht schon nach 2 Skeunden?
Eine Schleife die einfach nur bis 10.000.000 zählt, ist nach einem Bruchteil einer Sekunde fertig!
Es kommt drauf an was du alles in der Schleife machst.


mfg
umbrasaxum
 
ja das macht sie ja :-)

Nochmal:

Wenn ich ein printf ausgebe, dann macht er alles so, wie er es soll.

Kommentiere ich dann das selbe printf aus, dann gehts nimmer.

So einfach is das.

Kein Fehler in der Funktion oder ähnliches
 

Neue Beiträge

Zurück