Das sind die Regeln der Sprache.
13.33 ist ein numerisches Literal. Es wird wie ein Doppel behandelt, weil es ein Doppel ist. Wenn Sie möchten, dass 13.33 als Float-Literal behandelt wird, geben Sie 13.33f.
an13.33 ist ein doppeltes Literal. Wenn sizeof (float) == 4, sollte sizeof (13.33f) == 4 auch gelten, weil 13.33f ein Fließkomma-Literal ist.
Das Literal 13.33 wird als ein Gleitkommawert mit doppelter Genauigkeit und einer Breite von 8 Byte behandelt.
Der Typ und die Größe Ihrer Variablen sind in Ordnung. Der Compiler verfügt nur über Standardtypen für Literale, die in Ihrem Programm fest programmiert sind .
Wenn Sie sizeof(1)
anfordern, erhalten Sie sizeof(int)
. Wenn Sie sizeof(2.5)
anfordern, erhalten Sie sizeof(double)
. Diese würden eindeutig in ein char bzw. float passen, aber der Compiler hat Standardtypen für Ihre Literale und behandelt sie als solche bis zur Zuweisung.
Sie können dieses Standardverhalten jedoch überschreiben. Zum Beispiel:
%Vor%Prost!