Veröffentlicht 13. August 200718 j 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
13. August 200718 j Hallo, wie sieht die genaue Warnung aus und mit welchem Compiler unter welchem Betriebssystem arbeitest Du? Nic
13. August 200718 j Die Warnung: warning C4305: 'initializing' : Verkuerzung von 'const double' in 'float' Ich arbeite mit Microstoft Visual c++ 6.0, Windows XP
13. August 200718 j 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.
13. August 200718 j 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.
14. August 200718 j Ist aber auch wieder Compilerabhängig. Also beim MSVS das 'f' angewöhnen, die Warnung ignorieren oder die Warnung deaktivieren.
15. August 200718 j 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?
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.