Şimdi Ara

C' ta sorum :

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
3
Cevap
0
Favori
74
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • using System;


    namespace ConsoleApplication13
    {
    class Program
    {
    static void Main(string[] args)
    {
    int a = 2147483647;
    byte b= 255;
    short c = 32767;

    double d = a + b + c;
    Console.WriteLine(d);
    }
    }
    }

    ___________________________________________________________
    burada neden sonuç - bir sayı çıkıyor ?



  • araştırdıktan sonra geçici tür dönüşümü diye bir şey buldum ama ne olduğunu çözemedim
  • Integer overflow: In computer programming, an integer overflow occurs when an arithmetic operation attempts to create a numeric value that is outside of the range that can be represented with a given number of bits - either larger than the maximum or lower than the minimum representable value.

    https://en.wikipedia.org/wiki/Integer_overflow

    Bir veri tipine alabileceği maksimum değerin bir fazlasını vermeye çalışırsan, minimum değerine geri dönüp o şekilde saymaya devam eder.

    16 bitlik integer'larda 15 bit sayının kendisi için, kalan 1 bit de işaret (pozitif ya da negatif) için kullanılıyor. yani alabileceğin maksimum değer (2^15 - 1) = +32767. Bundan bir fazlası, bitlerin minimum değerine dönmesine sebep olur. Yani -32768. Sen de değişkenlerine belli bitler için alabilecekleri maksimum değerleri verip double'a cast etmeye çalışmışsın. O da overflow olmuş.

    2^31 = 2147483647 (32 bit integer)
    2^15 = 32767 (16 bit integer)
    2^7 = 255 (8 bit integer)




  • Yapay Zeka’dan İlgili Konular
    Oyunları C veya D ye Kurmak
    14 yıl önce açıldı
    c'de yardım
    14 yıl önce açıldı
    Daha Fazla Göster
    
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.