https://dzone.com/articles/overflow-and-underflow-data Hocam linkteki makalede yazdığına gre jvm tarafından herhangi bir warning yada exception üretilmiyor. 0x62 0x75 0x6e 0x75 0x20 0x79 0x61 0x7a 0x61 0x6e 0x20 0x74 0x6f 0x73 0x75 0x6e 0x2c 0x20 0x6f 0x6b 0x75 0x79 0x61 0x6e 0x61 0x20 0x6b 0x6f 0x73 0x75 0x6e

Buremba bunu yazdı çoğu dilde yaptığın işlemler neticesinde overflow var mı diye kontrol edilmez pahalı bi işlem olduğu için. o long'u zilyon tane işlemden geçirebilirdin ve her birinde kontrol etseydi performans sıkıntısı gzle grülür olurdu. bu yüzden senin değerleri karşılaştırıp overflow/underflow var mı kontrol etmen gerekiyor. genelde generic library'ler kullanılıyor bu tarz işler için mesela guava var, onda primitives package'ı var onda bu tarz işlemler için basit helper methodları var. rnek olarak Ints. checkcast'a bakabilirsin. http://docs.guava-libraries. googlecode.com/git/javadoc/src-html/com/google/common/primitives/Ints.html#line.87 tamamda bu overflow olayları compile edilirken incelenmiyo mu kod optimize yapılırken. mesela kullanmadığın bi değişkeni derlemeyen compiler, sayı overflow olunca hata yada warning verebilir. kod hızlı compile edilse ne olur yavaş edilse ne olur. nemli olan çalışırken ki hızı değil mi? bu arada java bilgim sıfır. aslında java ile pek alakası yok bu şekilde olmayan bir dil yok benim bildiğim. iki çeşit analiz şekli var biri static biri runtime.compiler static analysis olayını yapabiliyor sadece ama runtime olayını yapamıyor doğal olarak simulasyon falan yapması lazım ki onu da unit test yazarak yazılımcının yapması lazım. eğer sen kodun içerisinde bir long tanımlayıp değerine de long olamayacak birşey atarsan compiler hata verir normal şartlar altında. 10e95 aslında değeri double olan bir sayı, sen double long_num = 10e1595; yaparsan compiler'ın hata vermesi lazım. arkadaşın yaptığı ise statik bir değeri alıp long'a cast etmek yani biraz daha kompleks.compiler aslında bu durumda da hata verebilir, vermesi lazım ama demek ki o kadar zeki değil. ama genel olarak dışardan input alıp da çok rahat overflow yapabileceğin için compiler'lar bu işi yazılımcıya bırakıyorlar çünkü işi tam olarak çzemeyeceklerini bildikleri için o kadar kasmıyorlar anladığım kadarıyla. benim de compiler'lar hakkında bilgim sınırlı ama stackoverflow'da sorulabilir bir soru javac 1.8 bile hata vermiyor arkadaşın yazdığı koda. . . .. . ... .

ddetayli yazacagim. mobildeyim. int tipinde overflow varsacompile etmiyor. sanirsam longda da 10e400 koyuncs compile etmedi cast isslemiyle. absolut arkadsin dedigine gore java burada cast ederken verilen degerden alabildigi kdr aliyormus. yani maks degeri aliyor ve gerisi kaliyot. yazacam sonra Ozgurluk aslinda her istedigini yapabilmek degildir, istemedigini yapmamaktir. // Verdigin degeri gormeyince, gordugun degeri ver!!! // Hayatin herkes icin bir bavulu vardir!!! // Dusmek gerekir bazen hayatta; kalkmayi ogrenebilmek icin

hatta merak ettim eğer arkadaşın izni varsa stackoverflow'da sorabilirim soruyu. aslında o kadar da kompleks bir ifade değil java'nın bunu anlaması lazım normalde static analysis yaparken, altında başka bir sebep yatıyor olabilir. hocam bu isin izni mi olur :) sor tabi. Ozgurluk aslinda her istedigini yapabilmek degildir, istemedigini yapmamaktir. // Verdigin degeri gormeyince, gordugun degeri ver!!! // Hayatin herkes icin bir bavulu vardir!!! // Dusmek gerekir bazen hayatta; kalkmayi ogrenebilmek icin

hatta merak ettim eğer arkadaşın izni varsa stackoverflow'da sorabilirim soruyu. aslında o kadar da kompleks bir ifade değil java'nın bunu anlaması lazım normalde static analysis yaparken, altında başka bir sebep yatıyor olabilir. . . .. . ... .

herhangi bir warning vermiyor mu?

Arkadaslar Javadaki long tipinin aldigi maks deger 9223372036854775807. Simdi ben veri tiplerini incelerken soyle bisey yazdim. long long_num = 10e95; System. out. println Burada long degiskenine 10x10^95 degeri vermiyor mu? Bu sayi bundan buyuk degil mi? Hemde kat kat... Compile ediyorum. Calistiriyorum ve aldigim cikti 9223372036854775807. OverflowException vermesi gerekmez mi? Neden boyle yapiyor? Biri aydinlatirsa sevinirim. Ozgurluk aslinda her istedigini yapabilmek degildir, istemedigini yapmamaktir. // Verdigin degeri gormeyince, gordugun degeri ver!!! // Hayatin herkes icin bir bavulu vardir!!! // Dusmek gerekir bazen hayatta; kalkmayi ogrenebilmek icin

Java'da bu konuda C / C++'ın izinden gitme durumu var . Bu ne performans ne başka bir konu ile ilgili, tamamen tasarım icabı. Kontrol etmek sizin sorumluluğunuzda. anlıyorum.

çoğu dilde yaptığın işlemler neticesinde overflow var mı diye kontrol edilmez pahalı bi işlem olduğu için. o long'u zilyon tane işlemden geçirebilirdin ve her birinde kontrol etseydi performans sıkıntısı gzle grülür olurdu. bu yüzden senin değerleri karşılaştırıp overflow/underflow var mı kontrol etmen gerekiyor. genelde generic library'ler kullanılıyor bu tarz işler için mesela guava var, onda primitives package'ı var onda bu tarz işlemler için basit helper methodları var. rnek olarak Ints. checkcast'a bakabilirsin. http://docs.guava-libraries. googlecode.com/git/javadoc/src-html/com/google/common/primitives/Ints.html#line.87. . .. . ... .

double turunden float turune tur donusturme operatoru ile donusturme yapıldıgında bilgi kaybı olabilir. Bu durumda IEEE 754 formatının yuvarlama kuralları uygulanarak float turunde gosterilebilecek en yakın sayı elde edilir. Ornegin: double a; float b; a = 100.456789; b = a; System. out. printf ; // a = 100,456789 System. out. printf ; // b = 100,456787 Gercek sayı turunden tamsayı turune tur donusturme operatoru ile yapılan donusturme islemi iki asamada gerceklesir: Birinci asamada hedef tur long turu dısında bir tamsayı turunde ise once int turune donusturulur. Hedef tur long ise long turune donusturulur. Bu donusturme sırasında sayının noktadan sonraki kısmı atılır. Bu durumda elde edilen deger donusturulecek turun sınırları icerisinde kalıyorsa bir sorun olusmaz. Eger elde edilen deger donusturulecek turun sınırları icerisinde kalmıyorsa ve sayı negatifse donusturulecek turun tutabildigi en kucuk deger alınır, sayı pozitifse donusturulecek turun tutabildigi en buyuk deger alınır. Hedef tur byte, short ya da char turlerinden biriyse elde edilen deger birinci asamada elde degerin yuksek anlamlı byte degerleri atılmıs bicimidir. Ornek : public static void main Ornek 2 : byte cevirme : public static void main Burada donusturme byte turune yapıldıgından sayının noktadan sonraki kısmı atıldıgında deger int turune donusturulur. Sayının noktadan sonraki kısmı atıldıgında elde edilen deger int turu sınırları dısındadır. Cok buyuk bir deger olarak sınırlar dısında kaldıgından bu sayı int turu icerisinde tutulan en buyuk sayıya (2147483647) donusturulur. Daha sonra sayının yuksek anlamlı 3 byte'ı atılarak 1 byte lık sayı elde edilir. Dikkat edilirse bu sayı -1 sayısıdır. Absolut tarafından 04/Oca/16 10:46 tarihinde düzenlenmiştir Nice babayigitler kirayi kim odeyecek, coluk cocuk ne yiyecek derdinden dolayi dunyayi degistiremiyor.

turun max min ogrenmek istiyorsan wrapperlerinin max min methodlarini kullanabilirsin kullanabilirsin System. out. println ; System. out. println ; edit : Burdanda yazim implicit ve explicit tur donusumlerini javada inceleyebilirsin. Absolut tarafından 03/Oca/16 23:03 tarihinde düzenlenmiştir Nice babayigitler kirayi kim odeyecek, coluk cocuk ne yiyecek derdinden dolayi dunyayi degistiremiyor.

çoğu dilde yaptığın işlemler neticesinde overflow var mı diye kontrol edilmez pahalı bi işlem olduğu için. o long'u zilyon tane işlemden geçirebilirdin ve her birinde kontrol etseydi performans sıkıntısı gzle grülür olurdu. bu yüzden senin değerleri karşılaştırıp overflow/underflow var mı kontrol etmen gerekiyor. genelde generic library'ler kullanılıyor bu tarz işler için mesela guava var, onda primitives package'ı var onda bu tarz işlemler için basit helper methodları var. rnek olarak Ints. checkcast'a bakabilirsin. http://docs.guava-libraries. googlecode.com/git/javadoc/src-html/com/google/common/primitives/Ints.html#line.87 tamamda bu overflow olayları compile edilirken incelenmiyo mu kod optimize yapılırken. mesela kullanmadığın bi değişkeni derlemeyen compiler, sayı overflow olunca hata yada warning verebilir. kod hızlı compile edilse ne olur yavaş edilse ne olur. nemli olan çalışırken ki hızı değil mi? bu arada java bilgim sıfır.