C # переполнение не работает?Как включить проверку переполнения? - PullRequest
17 голосов
/ 02 февраля 2011

Я работал с C # и заметил это, когда у меня было очень большое целое число, и попытался увеличить его.Вместо того, чтобы выдавать какую-либо ошибку переполнения, она просто устанавливает число на минимально возможное значение (-2 147 483 648).

Мне было интересно, есть ли способ включить проверку переполнения в Visual Studio?

1 Ответ

31 голосов
/ 02 февраля 2011

Вы можете использовать следующие шаги, чтобы включить проверку арифметического переполнения / переполнения в Visual Studio:

  1. Щелкните правой кнопкой мыши свой проект в обозревателе решений и выберите Свойства.
  2. На вкладке Build нажмите кнопку Advanced.(Это внизу)
  3. Установите флажок «Проверка арифметического переполнения / недостаточного заполнения».

Это выдаст System.OverflowException когда происходит переполнение, а не обычная операция по изменению значения до минимального значения.

Без включенного арифметического переполнения / переполнения:

int test = int.MaxValue;
test++;
//Test should now be equal to -2,147,483,648 (int.MinValue)

При включенном арифметическом переполнении / недостаточном потоке:

int test = int.MaxValue;
test++;
//System.OverflowException thrown

Использование проверенного блока:

checked
{
    int test = int.MaxValue;
    test++;
    //System.OverflowException thrown
}

Документация для проверенных доступна здесь. ( Спасибо Саше за напоминание об этом. )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...