PIC C kompilatory a deleni

"Zíka Aleš, Ing." Ales.Zika@pel.br.ds.mfcr.cz
Čtvrtek Červenec 22 13:28:18 CEST 2004


> int8 sekundy,loginterval;
> 
> if (fmod(sekundy,loginterva)==0){};
> Coz se da take nahradit matematickym vyrazem:
> 
> sekundy - floor(sekundy/loginterval)
> 
> Ale jaky typ mezipromenne pouzivaji C kompilatory pro deleni dvou
> cisel typu int8 (1bajt) ? Neni to nahodou take jen int8 ? Nebo musi
> byt aspon jeden argument float a automaticky si kompilator nastavi
> typ prechodne promenne podle "nejdelsiho typu"  ?   
> 

	Pisu to z hlavy, mozna to nebude uplne presne. C standardne vsechno
pocita minimalne v int, tzn. pokud je nektery argument short nebo char,
prevede ho na int. Pokud je ovsem nektery z argumentu long, probiha vypocet
v long a pokud je float, tak vypocet probiha ve float nebo mozna rovnou
double (tohle si presne nepamatuju).

	Takze abyste dostal podil jako realny, misute aspon jeden argument
pretypovat na float nebo double, napr.:
	sekundy - floor((float)sekundy / loginterval)

	Ovsem int8 neni standardni Ceckovy typ, takze pouzivate nejaky
kompilator predpokladam pro MCU, a tam to mozna muze byt taky trochu jinak,
i kdyz zakladni pravidla K&R by snad mely ctit vsechy kompilatory C.


			Ales Zika
			CSE Spoje Pelhrimov

			http://results.cz
			e-mail: Ales.Zika@pel.br.ds.mfcr.cz
				  Ales.Zika@seznam.cz 



Další informace o konferenci Hw-list