int float
-
hallo zusammen
zwei kurze fragen:
1.:
wenn ich eine int zahl mit einer float multipliziere was hat dann das
ergebniss für einen wert? int oder float?2.:
float ergebniss
int wert1;
int wert2;ergebnis = (float)wert1*(float)wert2;
kann ich mit dem float in der klammer jeden zahlenwert auf float ändern?
besten dank tobias
-
ad 1:
ein floatad 2:
Ja, du castest, dh wegen antwort 1, daß es ausreicht, nur einen der Faktoren zu casten
-
int wird doch sogar implizit nach float gecastet, so dass du bei 2 gar nicht casten musst
int main(void) { int a=15,b=2; float ergebniss=a*b; return 0; }
-
Jau, stimmt natürlich. Ich war jetzt irgendwie im Kopf bei so dingen wie division (da muß man casten) oder wenn die Zahl nicht direkt einer Variablen zgewiesen wird.
-
besten dank schon einmal.
bei einer division muss man casten:
int a
int bfloat ergebnis
ergebnis = (float)a/b
ist das richtig?
-
int durch int ist int
wenn du also float willst musst du casten
-
Original erstellt von kingruedi:
int wird doch sogar implizit nach float gecastet, so dass du bei 2 gar nicht casten musstint main(void) { int a=MAX_INT,b=2; float ergebniss=a*b; return 0; }
*duck*
-
Original erstellt von kingruedi:
**int main(void) { int a=15,b=2; float ergebniss=a*b; //Rechtschreibfehler! return 0; }
**
-
@SG1
(meinst du vielleicht)#include <limits.h> int main(void) { int a=INT_MAX,b=2; float ergebnis=a*b; //so besser ;) @<Duden> return 0; }
hmm, ich versteh nicht, was du damit sagen willst.
-
Ich denke SG1 will darauf hinweisen, daß bei
int a = MAX_INT; int b = 2; float c = a*b;
Das falsche ergebnis rauskommt, weil die Multiplication zunächst ein int generiert. Das Multiplikationsergebnis ist damit falsch, weil a*b nicht im Wertebereich eines int liegt und damit auch nichts vernünftiges in c ankommt.
Berechtigter Einwand, finde ich