7
Birisi bana değişkende taşmanın nedenini açıklayabilir mi? B'nin a'dan büyük olduğunu unutmayın.Garip C# taşma hatası
static void Main(string[] args)
{
int i = 2;
long a = 1024 * 1024 * 1024 * i;
long b = 123456789;
System.Console.WriteLine("{0}", a);
System.Console.WriteLine("{0}", b);
System.Console.WriteLine("{0}", long.MaxValue);
}
-2147483648
123456789
9223372036854775807
Press any key to continue . . .
teşekkürler!
Belki de bu çalışma ifadesinin uzun süre saklanacağını görürse, çalışma zamanı daha esnek ve otomatik olarak "genişlet" hesaplanabilirdi? –
@Petar: Bence bu kötü bir fikir olurdu. Dili çok daha karmaşık hale getirecektir. Bu sorunu önlemek çok kolaydır ve dili basit tutar - bir ifadenin anlamının içeriğine bağlı olduğu birkaç yer vardır (ör. Lambda ifadeleri) ancak daha fazlasını görmek istemiyorum. –