Gibt es einen Unterschied zwischen:
float f;
f = (float)1.234;
und
float f;
f = 1.234f;
Natᅵrlich sind das verschiedene Konstrukte. Was mich jedoch
interessiert ist, ob es fᅵr den erzeugten Code einen Unterschied
macht falls man die eine oder die andere Form nutzt.
Ich habe das ganze mit gcc 4.3 ausprobiert und der erzeugte
Assemblercode ist mit diesem Compiler exakt gleich. Nun frage ich
mich ob der C Standard garantiert, daᅵ ein '1.234f' immer ᅵquivalent
zu '(float)1.234' ist oder ob ich nur mit der von mir genutzten
Implementierung "Glᅵck" gehabt habe.
Gruᅵ Frank
--
There are no threads in alt.binaries.pictures.erotica,
so there's no gain in using a threaded news reader.
-- unknown source
Ja. Im gegebenen fall ist allerdings beides ueberfluessig und
float f;
f = 1.234;
haette denselben Effekt.
Wobei ein einfaches '1.234' ja ohne Suffix eine double Konstante ist
(IIRC), was evtl Compilerwarnungen nach sich ziehen kᅵnnte, da
implizit in einen kleineren Datentyp gecastet wird.
Danke fᅵr die Klarstellung.
> Rainer Weikusat <rwei...@mssgmbh.com> wrote:
>
>> float f;
>> f = 1.234;
>>
>> haette denselben Effekt.
>
> Wobei ein einfaches '1.234' ja ohne Suffix eine double Konstante ist
> (IIRC), was evtl Compilerwarnungen nach sich ziehen kᅵnnte, da
> implizit in einen kleineren Datentyp gecastet wird.
"Implizit" und "gecastet" widersprechen sich. Ein Cast ist per
definitionem eine explizite Konvertierung. Du meinst "konvertiert".
Ich kenne keinen Compiler, der in einem solchen Fall warnen wᅵrde. Ein
solcher Compiler mᅵsste z.B. auch in solchen Fᅵllen warnen:
float f, g;
g = 1.234; /* Konstante ist double */
f = g + 1; /* Ausdruck ist double */
Gruᅵ. Claus
VC6 tut das oft und gerne.
Stefan