işlem sonucu yanlış mı ?

Başlatan ilhan_mkp, 09 Ekim 2015, 22:35:26

ilhan_mkp

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.

fatih6761

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.

engerex

 Güvenli tanımlama yapmamışsın.

unsigned char y;

mufitsozen

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
Aptalca bir soru yoktur ve hiç kimse soru sormayı bırakana kadar aptal olmaz.

ilhan_mkp

#4
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ı.

mufitsozen

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.
Aptalca bir soru yoktur ve hiç kimse soru sormayı bırakana kadar aptal olmaz.