Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
⊗csPmNuOf 56 of 436 menu
◀ ▶

Переполнение целого числа в C#

У типа int есть верхняя и нижняя граница. Число 2147483648 как положительное в int не входит. Если записать такое число прямо в код как литерал int, компилятор не пропустит программу:

// int num = 2147483648;

В C# тип int всегда занимает 4 байта, это 32 бита. Самое большое положительное число в нем равно 2147483647 и доступно как int.MaxValue.

Старший бит у знакового int показывает минус. У верхней границы он равен нулю, остальные биты - единицы. Следующая комбинация включает старший бит и обнуляет остальные. Эти же биты читаются как самое маленькое отрицательное число, -2147483648.

В обычном unchecked-контексте переполнение при операции над переменными не останавливает программу: значение идет по кругу. Прибавим единицу к int.MaxValue. После максимума следует самое маленькое отрицательное, дальше числа снова растут к нулю:

int num = int.MaxValue; num = num + 1; Console.WriteLine(num);

Дан следующий код:

int num = int.MaxValue; num = num + 1; Console.WriteLine(num);

Скажите, что выйдет на экран.

Соберется ли код с литералом int num = 2147483648;?

Есть число 2147483649. Помещается ли оно в диапазон типа int как положительное?

Есть число 3000000000. Помещается ли оно в диапазон типа int?

Какое самое большое положительное число хранит тип int?

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить