Вопрос

На самом деле я (возможно) «простая» проблема. Поэтому я не знаю, как бросить подписанное целое число в целое число без знака.

Мой код:

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);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top