[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