S.a beyler. Şöyle bir Sorunla karşılaştım.
int8 hiz=100;
int16 ay=0;
ay=50000-hiz*140;
dediğimde çarpma sonucu yanlış çıkıyor.
hiz değişkeninide int16 yapınca sonuç doğru oluyor.
ccs de int8 ile int16 değişkenleri çarpılmıyormu ?
unsigned int16 ay=0; /// yap sıkıntı olursa
ay=(unsigned int16)(50000-(hiz*140));
Buradaki sıkıntı şu. Çarpma işlemi önce yapılıp sonra atama işlemi yapılır. Yani yazdığın kod aslında şu şekilde çalışıyor:
int8 hiz=100;
int8 vit =50000-hiz*140;
int16 ay = vit
CCS C'de int8 -128 ile 127 arasında değer alıyor. Sen o çarpma işlemini yaptığında da haliyle overflow oluşuyor. Çarpma işlemini yaparken cast işlemi yapmalısın.
Teşekkürler sorunum çözüldü :)
Hadi bakalım kolay gelsin ;)
int32