Zahl in Ziffern zerlegen und abspeichern.
-
@EinNutzer0 Nein. Es geht nicht darum ob sich ein Compiler beschwert.
-
@EinNutzer0 Wenn sich dein Compiler nicht beschwert, bedienst du ihn falsch
-
Natürlich ging es darum, dass er sich bei
-Wall
beschwert, über ein Problem, das praktisch gesehen niemals auftritt.Aber von mir aus verwendet doch den esoterischen Firlefanz von Wutz, auch wenn der nicht besser lesbar is. Ich verwende meins und gut is.
-
@EinNutzer0 sagte in Zahl in Ziffern zerlegen und abspeichern.:
Natürlich ging es darum, dass er sich bei -Wall beschwert, über ein Problem, das praktisch gesehen niemals auftritt.
Es geht darum was im Standard steht.
-
@EinNutzer0 sagte in Zahl in Ziffern zerlegen und abspeichern.:
über ein Problem, das praktisch gesehen niemals auftritt.
So, meinst du.
Du täuscht dich.Das ist ja das blöde an UB, dass es nicht auftreten muss.
Dabei ist es so einfach das UB zu umgehen.
-
Vielen Dank für Eure Hilfe.
Bevor die Diskussion weiter geht, könnt ihr einem Amateur noch einmal helfen
Es geht zurück an die Basics..
Ich schreibe folgenden Code:
double zahl1; printf("Zahl eingeben: "); scanf("%lf", &zahl1); printf("Zahl lautet: %f", zahl1);
Eine Dezimalzahl wird eingegeben.
Wieso gibt die Printf das richtige Ergebnis aus, obwohl prinzipiell für die "double" deklaration %lf gillt?Dankeeeee
-
printf()
ist eine Funktion mit variabler Zahl an Parametern. Solchen Funktionen kann man keinenfloat
übergeben weil die "Default Conversions" greifen. Also gibt es fürprintf()
und Freunde auch keinen unterschied zwischen%f
und%lf
.https://en.cppreference.com/w/cpp/language/variadic_arguments
-
Und noch zu ergänzen: die Parameter für scanf und printf sind nicht identisch.
Schau dir https://en.cppreference.com/w/c/io/fscanf und https://en.cppreference.com/w/c/io/fprintf an. Auf letzterer Seite siehst du auch, dass f und lf beide ein double-Parameter erwarten.Edit: Links für C (statt C++)
-
@daniwe Aber Achtung!
scanf ist nicht printf und umgekehrt.
scanf bekommt Adressen übergeben, keine Werte.
-
-
@Swordfish sagte in Zahl in Ziffern zerlegen und abspeichern.:
ist für C++ dasselbe.
ja, ich war mit dem Absenden-Button zu schnell. Wollte eigentlich nur die korrekten Links für C posten, da ich erst aus Versehen die Doku für C++ verlinkt hatte. Und ist unschön, wenn dort dann von std::printf und "since C++11" statt "since C99" gesprochen wird etc. - und wegen restrict ist die Signatur in C auch anders.
-
@wob aso
-
Verstanden Männers!
Danke!