Почему (-1 - int.minvalue) не вызывает переполнения целого числа?C#

Место общения программистов C#
Anonymous
Почему (-1 - int.minvalue) не вызывает переполнения целого числа?

Сообщение Anonymous »

Почему C# проверено Ключевое слово не рассматривает -1 -int.minvalue как переполнение?

Код: Выделить всё

int x = int.MinValue;
int y;

checked {
// Overflow. 2^31 cannot be represented in signed integer.
try { y = -x; } catch (OverflowException) { Console.WriteLine ("Overflow 1"); }

// Overflow. Though the final result (2^31-1) fit in an integer, the intermediate value does not.
try { y = -x-1; } catch (OverflowException) { Console.WriteLine ("Overflow 2"); }

// No overflow. Please explain.
try { y = -1-x; } catch (OverflowException) { Console.WriteLine ("Overflow 3"); }
}
< /code>
output: < /p>
Overflow 1
Overflow 2
Это ошибка при проверке переполнения C# или что -то, что связано с архитектурой процессора?


Подробнее здесь: https://stackoverflow.com/questions/797 ... r-overflow

Вернуться в «C#»