.NET 4.x Вылетает OverflowException в unchecked блоке - C#

Узнай цену своей работы

Формулировка задачи:

Собственно, почему код приведенный ниже выкидывает OverflowException ? Изначально просто хотел написать небольшую головоломку...
Листинг программы
  1. int x;
  2. unchecked
  3. {
  4. x =Math.Abs(int.MinValue) * 2;
  5. }

Решение задачи: «.NET 4.x Вылетает OverflowException в unchecked блоке»

textual
Листинг программы
  1. using System;
  2.  
  3. class Program
  4. {
  5.     public static int DoubleAbs(int x)
  6.     {
  7.         if (x < 0) x = (x ^ -1) + 1;
  8.         return x << 1;
  9.     }
  10.     public static void Main()
  11.     {
  12.         Console.WriteLine(DoubleAbs(10));
  13.         Console.WriteLine(DoubleAbs(-10));
  14.         Console.WriteLine(DoubleAbs(Int32.MaxValue));
  15.         Console.WriteLine(DoubleAbs(Int32.MinValue));
  16.     }
  17. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 3.889 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут