В C # может ли приведение Char к Int32 дать отрицательное значение? - PullRequest
5 голосов
/ 19 октября 2011

Или всегда гарантированно быть положительным для всех возможных символов?

Ответы [ 5 ]

10 голосов
/ 19 октября 2011

Гарантируется, что оно будет неотрицательным.

char - это без знака 16-битное значение.

Из раздела 4.1.5 спецификации C # 4:

Тип char представляет 16-разрядные целые числа без знака со значениями от 0 до 65535. Набор возможных значений для типа char соответствует набору символов Unicode.Хотя char имеет то же представление, что и ushort, не все операции, разрешенные для одного типа, разрешены для другого.

2 голосов
/ 19 октября 2011

Каждое 16-битное значение находится в диапазоне от шестнадцатеричного 0x0000 до 0xFFFF и составляет хранится в структуре Char.

Структура символа - MSDN

2 голосов
/ 19 октября 2011

Поскольку диапазон char равен от U + 0000 до U + ffff, приведение к Int32 всегда будет положительным.

0 голосов
/ 19 октября 2011

char может быть неявно преобразовано в ushort, а диапазон ushort равен 0 to 65,535, поэтому всегда положительный

0 голосов
/ 19 октября 2011

См. Документацию Microsoft

Там вы можете видеть, что Char - это 16-битное значение в диапазоне от U + 0000 до U + ffff.Если вы приведете его к Int32, отрицательного значения быть не должно.

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