C: преобразовать подписано на беззнаков
-
26-09-2019 - |
Вопрос
На самом деле я (возможно) «простая» проблема. Поэтому я не знаю, как бросить подписанное целое число в целое число без знака.
Мой код:
signed int entry = 0;
printf("Decimal Number : ");
scanf("%d", &entry);
unsigned int uEntry= (unsigned int) entry;
printf("Unsigned : %d\n", uEntry);
Если я отправлю ценность без знака в консоль (см. Мой последнюю строку кода), я всегда возвращаюсь подписанным целым числом.
Можете вы помочь мне?
Большое спасибо!
Добрые пожелания, про
Решение
printf("Unsigned : %u\n", uEntry);
// ^^
Вы должны использовать %u
спецификатор, чтобы сказать printf
время выполнения, что то uEntry
является unsigned int
. Отказ Если вы используете %d
то printf
функция ожидает int
, Таким образом, переосмысление вашего ввода обратно в подписанное значение.
Другие советы
Добавьте эти две линии в конце вашего кода, и вы поймете, что происходит.
printf("entry: signed = %d, unsigned = %u, hex = 0x%x\n", entry, entry entry);
printf("uEntry: signed = %d, unsigned = %u, hex = 0x%x\n", uEntry,uEntry,uEntry);
Не связан с StackOverflow