Picproje Elektronik Sitesi

DERLEYİCİLER => MikroC - PIC => MikroC ARM => Konuyu başlatan: ilhan_mkp - 09 Ekim 2015, 22:35:26

Başlık: işlem sonucu yanlış mı ?
Gönderen: ilhan_mkp - 09 Ekim 2015, 22:35:26

double x ;
char y;

x = 1.5 * 100;
y = x;



mikroc ile bu işlemi yaptığımda sonuç y 1 oluyor.
neden 150 vermiyor anlayamadım.
Başlık: Ynt: işlem sonucu yanlış mı ?
Gönderen: fatih6761 - 09 Ekim 2015, 22:42:35
Hocam derleyici çıktısına bakın. Muhtemelen "implicit conversion from double to char" manasında bir uyarı vardır.
Yoksa da siz ifadeyi şu şekilde değiştirerek deneyin:
y = (char)x;
Bu da olmazsa Assembly Listing'ine bakarız.
Başlık: Ynt: işlem sonucu yanlış mı ?
Gönderen: engerex - 09 Ekim 2015, 22:59:41
 Güvenli tanımlama yapmamışsın.

unsigned char y;
Başlık: Ynt: işlem sonucu yanlış mı ?
Gönderen: mufitsozen - 09 Ekim 2015, 23:01:57
Alıntı yapılan: ilhan_mkp - 09 Ekim 2015, 22:35:26

double x ;
char y;

x = 1.5 * 100;
y = x;



mikroc ile bu işlemi yaptığımda sonuç y 1 oluyor.
neden 150 vermiyor anlayamadım.

y'nin 1 oldugunu nereden anliyorsunuz? dogrusu -106 olmali
Başlık: Ynt: işlem sonucu yanlış mı ?
Gönderen: ilhan_mkp - 09 Ekim 2015, 23:15:48
müfit hocam similasyon 1 veriyor ben bişi demedim yani :-[


mesaj birleştirme:: 09 Ekim 2015, 23:21:15

en basit haliyle şöyle sorayım bir double sonuç var 150.2 diyelim.
bu sonucu char içine atarsam 150 olarak görüyorum.
ama sonucu tam sayı olarak 1502 olarak görmek istiyorum.
abilerim kusuruma bakmayın mühedis değilim yazılımcıda değilim konuya çok hakim değilim kısacası.
Başlık: Ynt: işlem sonucu yanlış mı ?
Gönderen: mufitsozen - 09 Ekim 2015, 23:56:40
simulatoru yol yakinken baska biri ile degistiriyorsun demekki  :D

simdi double kullanmaman gerekir ama o baska konu basligi.

simdi char deyince icine koyabilecegin sayilar -128 den +127'e kadar olur
eger unsigned char dersen 0dan 255 kadar sayilari kullanabilirsin

1.5 ile 100 carpinca sonuc 150 yapiyor, onu char degiskene koymaya calisinca 'overflow' oluyor cunku char degskenler 127'den buyuk bir deger tutamaz. Binary olarak sayilarin nasil gosterildigini filan anlatarak aciklanacagi uzere 150 yerine (150-256 seklinde aciklayabilecegimiz bir sekilde) sonuc -106 oluyor.

Tam olarak ne yapmak istedigini yazarsan (projeni), birileri sana ornek bir program yazar yada yol gosterir. Sende bu konulari ogrenebilirsin. Ama amacin ogrenmekse deneme yanilma ile program yazilmaz.

C ile ilgili bir kitap alip, bir kere bastan sona okursun/uygularsin. Ondan sonra ornek programlar yazmaya baslarsin... diye oneriyorum, ister yaparsin ister yapmazsin oda sana kalmis.

Kolay gelsin.