Вообразите, могли ли Вы использовать тот же UI (XAML) от Вашей страницы ASP.NET/ (Silverlight) с Вашим настольным приложением. Вы только создали бы его однажды, но соединили бы его проводом любому.... это - одно из намерений WPF/XAML... мы действительно там уже? Еще, но ближе получение.
Настоящий ответ на этот вопрос заключается в правилах повышения типа.
Если я применяю арифметический оператор к unsigned int
и int
], то аргумент int
переходит в беззнаковый
, и результат также становится беззнаковым
.
Если функция abs ()
вернула беззнаковый
, то при использовании в выражении это вызвало бы такой вид повышения типа других значений, что привело бы к неожиданным результатам. Например, этот код:
if (abs(-1) * -1 < 0)
printf("< 0\n");
else
printf(">= 0\n");
выведет «> = 0», что многим не нравится. Компромисс, заключающийся в невозможности использовать единственное значение INT_MIN
, по-видимому, казался приемлемым.
Зачем вообще возвращать значение, используя беззнаковое пространство?
Давайте рассмотрим 8-битные числа со знаком и без знака. Если у вас -128, результат не определен ... Я думаю, stdlib не хочет сильно замедлять работу. Если вы думаете, что у вас может быть число в этом диапазоне, тогда вам нужно использовать что-то другое.
Если вы думаете, что у вас может быть значение больше 127 в вашем подписанном char, то вы ошибаетесь.
Следовательно, это не требуется для того, чтобы значение могло содержать значение больше 127, и сохранение его подписью ничего не теряет. Если вы хотите преобразовать его в unsigned, продолжайте. Поскольку раньше это было целое число со знаком, велика вероятность, что вы снова будете выполнять математические вычисления со знаком. Лично я бы предпочел, чтобы шрифт оставался подписанным,