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.
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)