mit welchem Typ werden berechnungen ausgeführt??
-
sobald n double vorkommt wird das ergebnis auch double. wenn du das ergebnis dann nem int zuweist, wird der wieder konvertiert.
-
Vielen dank für die hilfen. Entzwischen habe ich das gefunden was ich meinte, hab mich wohl etwas ungeschickt ausgedrückt;)
Es werden beide Operanden in den "höherwertigen" Typ konvertiert wobei:
char,short < int < long < long long < float < double < long double
sowie unsigned mit priorisierung über singed
-
soweit ich weiß, kann man aber auch angeben, was für einen Typ deine zuvor definierten Werte nun annehmen sollen.
z.B. kann eine Modulo-Operation % nicht mit double Operatoren ausgeführt werden.
double db0, db1; db0 = 12.1245; db1 = 10.999999; int erg = (int) db0 % (int) db1;
-
es wird immer in den tuep konvertiert in den du es speicherst d.h:
int x = y + z;
x plus y wird immer in nen int umgewandeltdouble x = y + z
y plus z wird immer in nen double umgewandelt
-
int a = 0.4 + 0.4 + 0.4;
a == 1 == (int)(0.4 + 0.4 + 0.4) == (int)(1.2)template hat die type promotion schon dargestellt. so wird auch erstmal gerechnet. erst bei der zuweisung wird in den typ der variablen auf der linken seite konvertiert.
-
--linuxuser-- schrieb:
es wird immer in den tuep konvertiert in den du es speicherst d.h:
int x = y + z;
x plus y wird immer in nen int umgewandeltdouble x = y + z
y plus z wird immer in nen double umgewandeltso ein schmarrn
-
hier der beweis
[code]
#include <iostream.h>
#include <conio.h>int main()
{
int i = 1;
double d = i / 2;
cout << d;
getch();
return 0;
}
[code]na was kommt raus? 0 :p
-
doppeld schrieb:
--linuxuser-- schrieb:
es wird immer in den tuep konvertiert in den du es speicherst d.h:
int x = y + z;
x plus y wird immer in nen int umgewandeltdouble x = y + z
y plus z wird immer in nen double umgewandeltso ein schmarrn
Hallo!
Es wird generell IMMER in den grösseren typ umgewandelt...
-
lest "the c programming language, second edition" von kernighan und ritchie. da drin ist es alles wunderbar erklaert.
fuer einen binaeroperator werden beide typen in den naechsthoeheren konvertiert und dann die operation ausgefuehrt. bei einer zuweisung dann muss die rechte seite in die linke seite konvertiert werden.
-
c.rackwitz schrieb:
lest "the c programming language, second edition" von kernighan und ritchie. da drin ist es alles wunderbar erklaert.
fuer einen binaeroperator werden beide typen in den naechsthoeheren konvertiert und dann die operation ausgefuehrt. bei einer zuweisung dann muss die rechte seite in die linke seite konvertiert werden.
Das ist Korrekt!...
-
naja, "naechsthoeherer" sollte heissen, "groesserer von beiden"
auch gibts unterschiede zwischen signedness und unsignedness und die sind auch irgendwie in der type promotion eingeflochten.