C: конвертировать подписанный в неподписанный - PullRequest
0 голосов
/ 29 сентября 2010

На самом деле у меня (наверное) "простая" проблема.Так что я не знаю, как привести целое число без знака к целому числу без знака.

Мой код:

signed int entry = 0;
printf("Decimal Number : ");
scanf("%d", &entry);
unsigned int uEntry= (unsigned int) entry;
printf("Unsigned : %d\n", uEntry);

Если я отправляю значение без знака на консоль (см. Мою последнюю строку кода), я всегда получаю целое число со знаком.

МожетВы мне помогаете?

Большое спасибо!

С уважением, pro

Ответы [ 2 ]

9 голосов
/ 29 сентября 2010
printf("Unsigned : %u\n", uEntry);
//                 ^^

Вы должны использовать спецификатор %u, чтобы сообщить среде выполнения printf, что uEntry является unsigned int.Если вы используете %d, функция printf будет ожидать int, таким образом, переосмыслите ваш ввод обратно со знаком.

1 голос
/ 30 сентября 2010

Добавьте эти две строки в конец вашего кода, и вы поймете, что происходит.

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);
...