Was ist der Datentyp von x + y?Benötigen Sie Hilfe zum Verständnis, warum dieser Code nicht kompiliert wird
doppelt x = 39,21;
float y = 2,1;
Erläuterung:
Dies ist eigentlich ein Trick Frage, da dieser Code nicht kompilieren! Als erinnern Sie sich vielleicht aus Kapitel 1, dass Fließkomma-Literale doppelt angenommen werden, es sei denn, mit einem f wie in 2.1f nachfixiert. Wenn der Wert ordnungsgemäß auf 2.1f festgelegt wäre, wäre die Heraufstufung ähnlich dem letzten Beispiel , wobei beide Operanden zu einem Double hochgestuft werden, und das Ergebnis wäre ein doppelter Wert.
Aber ich verstehe nicht. Wenn float y = 2,1; wurde angenommen, dass doppelt würde es keine Notwendigkeit für die Förderung von Variable y zum Doppel. Und ich bin mehr verwirrt durch das nächste Problem, das ist:
Was ist der Datentyp von x * y/z?
kurz x = 14; float y = 13; Doppelz = 30;
Das Buch sagt, dass dies sogar den Float y = 13 kompilieren wird; ist nicht float y = 13f. Füge ich nur f neben der Gleitkommazahl hinzu, wenn sie dezimal sind? Ich kann wirklich den Unterschied zwischen diesem Problem und dem oben erwähnten Problem nicht sehen.
y ist als Schwimmer zugeordnet. Der wörtliche Ausdruck "2.1" (ohne ein explizites hinteres f) ist ein Double. Es wird nicht kompiliert, weil Sie kein größeres Double in einen kleineren Float stopfen können. –
Sie können jedoch einem float ein int '13' zuweisen, da ein int zu einem float hochgestuft werden kann. –
In Verbindung stehend: http://stackoverflow.com/questions/28361456/why-explicit-type-casting-required-from-double-to-float-but-not-from-int-to-byte –