Я сейчас читаю через C # 4.0 в двух словах, и в главе 2 говорится, что если объект int имеет значение int.MinValue
(-2147483648) и значение уменьшается, так как значение не может быть ниже , это достигает самого высокого значения, int.MaxValue
(2147483647):
int a = int.MinValue;
Console.WriteLine(a); //-2147483648
a = a-1;
Console.WriteLine(a); //-2147483648
Console.WriteLine (a == int.MaxValue); // True
Далее в книге упоминается, как вы можете защитить себя от этого, используя checked
.
Однако мне интересно, почему это возможно? Конечно, это может вызвать много проблем, если он не защищен с checked
?
Разве это не недостаток в дизайне? Почему кто-то хочет, чтобы минимальное значение стало максимальным?
Кроме того, я заметил, что VB.NET выдаст «арифметическое переполнение» вместо того, чтобы это произошло:
Dim a As Integer
a = Integer.MaxValue
a = a + 1
Response.Write(a) 'Arithmetic overflow exception here