[elektro] C aritmetika?
Palasik Sandor
palasik at mail.datanet.hu
Tue Apr 6 23:38:46 CEST 2010
> Bocs nem értek veled egyet, a nyelvnek ezt részét sehogyan se
> definiálták :-( ez mindig az adott megvalósítás függő!
Szerintem pedig pontosan definiálták. Minden artitmetikai művelet
precizitását az operandusai határozzák meg és csak a művelet elvégzése után
konvertál az eredmény típusra, ha az más. Esetleg figyelmeztet, ha
veszítessz a pontosságból, de nem trükköz.
Az lehet, hogy mondjuk egy a*(long)b szorzásnál rájön, hogy az eredményt
elég egy rendes integer szorzás után longgá alakítani, ezt ki kell próbálni.
Pl. a 16 bites MS C fordító (C8.00) rájön, hogy ez a helyzet.
a
c = a*(long)b;
vagy
c = (long)a*b;
utasítás így fordul:
mov ax,WORD PTR _b
imul WORD PTR _a
mov WORD PTR _c,ax
mov WORD PTR _c+2,dx
Palasik Sándor
More information about the Elektro
mailing list