[elektro] C cast kérdés

István Vomberg vomberg at chemotron.hu
Sun Apr 5 23:02:32 CEST 2009


Tudtommal a / jel az helyből lebegőpontos osztást jelent akkor is, ha
egész típusú amiket osztasz.

Mindenesetre kerekítési határok környékén így érhetik meglepetések az
embert.

Az pedig, hogy a PIC24-es fordítóban nem megy a double-ra castolás, hát
érdekes. Akkor is, ha "csak" optimalizálva.

De ha a long long kell, akkor mindegyik változót castold arra, az a
legbiztosabb. Igaz, hogy 20 éve Pascallal, de ezt úgy beszoptam, hogy
egy hónapig csak ezt a hibát vadásztam. Azóta castolok mindent ha
ilyesmi helyzet van.

hg12345 írta:
> Megnéztem, optimalizáció után nem látom milyen kódot generál, de hogy nem müködik az biztos.
>
> Optimalizáció nélkül jó az eredmény. A forditó GNU C 4.03 alapú PIC24-s.
>
>  
>
> Direkt irtam, hogy nem akarom lebegöpontos müveletekket, és nem a sebesség miatt.
>
> Szerintem fixpontos változók esetén nem számolhat belül lebegöpontos osztással az biztos!
>
>
> "István Vomberg" <vomberg at chemotron.hu> írta: 
>
>
>
>
>   
>> Ha nem időkritikus a futás, akkor én double-ra castolnám _mindegyik_
>> változót és long-ra az egészet.
>>
>> e = (long)(((double)m1 * (double)m2 ) / (double)div);
>>     



More information about the Elektro mailing list