Зачем вам произойдет целочисленное переполнение?

В этом вопросе речь идет о том, как заставить VS проверять арифметическое переполнение в C # и генерировать исключение: Переполнение C # не работает? Как включить проверку переполнения?

В одном из комментариев говорилось о чём-то странном, и он получил много голосов, я надеюсь, вы можете мне помочь:

Вы также можете использовать ключевое слово checked, чтобы обернуть оператор или набор операторов, чтобы что они явно проверяются на арифметическое переполнение. Установка свойства для всего проекта немного рискованна, потому что часто переполнение является вполне разумным ожиданием.

Я мало знаю об аппаратном обеспечении, но знаю, что переполнение связано с тем, как работают регистры. Я всегда думал, что переполнение вызывает неопределенное поведение и его следует предотвращать, где это возможно. (в «обычных» проектах, а не при написании вредоносного кода)

Почему вы вообще могли ожидать переполнения и почему бы не? Всегда ли вы предотвращаете это, если у вас есть возможность? (путем установки соответствующей опции компилятора)

25
задан Community 23 May 2017 в 11:53
поделиться