Почему я не могу назначить двоичный литерал 32 бит для int32? - PullRequest
2 голосов
/ 12 апреля 2020

Почему компилятор терпит неудачу с этой ошибкой: «Я не могу неявно преобразовать uint в int», когда я делаю это?:

int bits = 0b1001_1000_0000_0000_0000_0000_0000_0000;

1 Ответ

4 голосов
/ 12 апреля 2020

0b1001_1000_0000_0000_0000_0000_0000_0000 - это значение uint. Что вы можете сделать, это явно преобразовать его в int, здесь с unchecked, чтобы учесть отрицательные числа (когда заданное значение превышает Int32.MaxValue):

int bits = unchecked((int)0b1001_1000_0000_0000_0000_0000_0000_0000);

В этом пример у вас будет bits == -1744830464

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...