Sythus Geschrieben 13. August 2007 Geschrieben 13. August 2007 Hallo liebe Community, bin neu hier und möcht mich gleich mal beteiligen - habe zwar kein wirkliches Problem aber eine Frage. #include <stdio.h> int main() { [COLOR="Red"]double[/COLOR] a=123.456,b=76.543; printf("a + b = %f\n\n", a+; return 0; }[/code] Dies ist nur ein Beispielprogramm in dem ich mit Gleitpunktzahlen herumexperimentiert hab. Ich hatte erst den Datentyp float, doch da spuckte er 2 Warnungen aus. Frage mich aber warum, float ist kleiner als double und kann 6 stellen wiedergeben. Trotzdem meckert er. Kann mir jemand sagen warum? Grüße Sythus
nic_power Geschrieben 13. August 2007 Geschrieben 13. August 2007 Hallo, wie sieht die genaue Warnung aus und mit welchem Compiler unter welchem Betriebssystem arbeitest Du? Nic
Sythus Geschrieben 13. August 2007 Autor Geschrieben 13. August 2007 Die Warnung: warning C4305: 'initializing' : Verkuerzung von 'const double' in 'float' Ich arbeite mit Microstoft Visual c++ 6.0, Windows XP
Guybrush Threepwood Geschrieben 13. August 2007 Geschrieben 13. August 2007 In welcher Zeile kommt die denn? Wenn es die printf Zeile ist dann liegt es an der Ungenauigkeit von Gleitkommazahlen. Das heißt das bei der Addition von a und b ein Ergebnis rauskäme das größer ist als der Wertebereicht von float.
marcom Geschrieben 13. August 2007 Geschrieben 13. August 2007 Die Zahlen 123.456 bzw. 76.543 sind doubles. Willst du ausdrücklich ein float, schreib ein "f" als suffix also: float a=123.456f, b =76.543f; Damit sagst du dem Compiler dass du dich nicht verschrieben hast sondern wirklich nur 4 byte belegen willst.
maddin Geschrieben 14. August 2007 Geschrieben 14. August 2007 Ist aber auch wieder Compilerabhängig. Also beim MSVS das 'f' angewöhnen, die Warnung ignorieren oder die Warnung deaktivieren.
Klotzkopp Geschrieben 15. August 2007 Geschrieben 15. August 2007 Ist aber auch wieder Compilerabhängig. Was meinst du? Dass der f-Suffix ein Float-Literal kennzeichnet? Das steht so im Standard, genau wie l (L) für long double. Oder meinst du die Warnung selbst?
maddin Geschrieben 15. August 2007 Geschrieben 15. August 2007 Ich meine die Warnung selbst, die nicht bei jedem Compiler ausgegeben wird.
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden