Spaß mit <, double und int
-
Moin zusammen,
Ich bin ein wenig irritiert über die Ausgabe des folgenden Codeabschnitt:
double a = 0.6; if (12 < a*20) cout << "12 < 12\n"; else cout << "12 not < 12\n"; a = 0.9; if (18 < a*20) cout << "18 < 18\n"; else cout << "18 not < 18\n"; if (18 < (int)a*20) cout << "18 < 18\n"; else cout << "18 not < 18\n";
Unter Linux und mit nem gcc 2.95 ergibt das nämlich folgendes:
12 not < 12 18 < 18 18 not < 18
So ein Müll.
-
Und was ist da unklar ^^
-
-
also ich denk mal das du die ersten zwei bedingungen irgendwie durchblicken kannst...
bei der dritten bedingung macht man da ein Cast womit du a = 0,9 (double) in ein integer (int) Wert verwandelst. Da aber integer Werte keine Nachkommastellen besitzen (nur intern gibt es Nachkommastellen für den Skalierungsfaktor) wird dann a zu 0. Daraus folgt das 0*20 gleich 0 ist. Also schau dir nochmal das Kapitel mit Typen an
lg
~Gast