Отрицательный оператор игнорируется для Int.minvalueC#

Место общения программистов C#
Ответить
Anonymous
 Отрицательный оператор игнорируется для Int.minvalue

Сообщение Anonymous »

При попытке применить отрицательный оператор (-) к числу с минимальным значением int (

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

-2147483648
), он полностью игнорируется вместо того, чтобы бросить OverflowException . Например, у меня есть следующий код: < /p>

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

int temp = int.MinValue;//-2147483648
int temp2 = -temp;//Should evaluate to 2147483648, which would throw an OverflowException, but instead is ignored and returns -2147483648
Переменной Temp присваивается значение -2147483648 , что является минимальным значением для типа int и является совершенно верным. Переменная temp2 , однако, должна выбросить OverflowException , потому что 2147483648 >

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

int.MaxValue
. Вместо этого отрицательный оператор ( -) игнорируется и temp2 заканчивается значением -2147483648 (

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

int.MinValue
, то же самое, что и темп). Та же самая проблема возникает, если я умножаюсь на -1 вместо: < /p>

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

int temp2 = -1 * temp;//Same problem as above
Все работает, как и ожидалось, когда Temp является положительным значением или значением, больше, чем int.minvalue , и -int.minvalue дает компиляцию -Карома (как и ожидалось). Почему отрицательный оператор игнорируется вместо того, чтобы бросить OverflowException ?

Подробнее здесь: https://stackoverflow.com/questions/794 ... t-minvalue
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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