Alıntı (acehreli):
>> writeln(int.max + 1); // int olduğu için taştığından 0 yazardı
>
> long l = int.max + 1;
> writeln(l); // long'a karar verilmiş olsa taşmayacağından 2_147_483_648 yazardı
> ```
> Belki de kodu açıklamak için eklediğimiz l değişkeni nedeniyle şaşırtıcı olmaktan öte program farklı da işlemeye başlardı.
>
Çok şaşırtıcı çünkü sonuç -2147483648. Eksi (!), nasıl olur hayret...:)
Alıntı (acehreli):
>
> short s = 1; // Derleyici hata vermeli mi?
> Aslında dil kurallarına göre yukarıdaki satırın hatalı olması gerekir çünkü 1'in türü int'tir ve int ifadeler short gibi küçük türlere otomatik olarak dönüşmezler.
Bu güzel bir olanak, tıpkı 'bool' türleri 0 veya 1 ise birbirlerine dönüşebildiği gibi. Bu kısmı D.ershane'de bugün tekrar okudum. Okurken aklıma 'if()' ve 'while()' gibi dil olanaklarında, 1'den büyük sayıların da 'true' olarak algılandığı ve bunun belirtilmesi gerektiği geçmişti. Neyse ki Ali hocam da aynı şeyleri düşünüyormuş ki ayrıntısıyla buna değinmiş...:)
Özetle aynı şeyleri konuşsak da ben bunları denemediğim için (ya da anlayış yapım farklı olduğundan!) dün anlayamamıştım. Neyse ki birebir denedim ve öğrendim. Hatta tür tespitinin 'byte''dan itibaren başladığını zannettim. Emin olmadan bunu yazdığım için de gri hale getirerek düzeltme yaptım. Çünkü yaptığımız hatalar da bizim öğrenmemizi sağlıyor. Hatta bu konuda ünlü bir düşünür (ismini hatırlayamadım) hiç bir zaman pişmanlık duymadığını, yaptığı hatalarının boş geçirlen zaman olmadığını ve aksine bunlar sayesinde geleceğe daha ne baktığını söylemiştir. Ali hocam da hatalar konusundaki hassasiyetini ve ileti düzenleme konusundaki estetiğini hatılıyorum da forumda "hata olursa olsun, bakınız bu da bir hata" cümlesiyle gerçek zamanda örneklemişti! Sonra da bunu bir sonraki iletisinde düzeltmişti...
Bu uzun özetten sonra dile getirmeliyim ki bütün mesele (Shakespeare'e gönderme!) olmak veya olmamak değil hatanın olup olmamasıdır...:)
--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]