0

实际上我(可能)有一个“简单”的问题。所以我不知道如何将有符号整数转换为无符号整数。

我的代码:

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

如果我将无符号值发送到控制台(请参阅我的最后一行代码),我总是会返回一个有符号整数。

你能帮助我吗?

非常感谢!

亲切的问候,亲

4

2 回答 2

9
printf("Unsigned : %u\n", uEntry);
//                 ^^

您必须使用说明%u符告诉printf运行时它uEntry是一个unsigned int. 如果您使用%dprintf函数,则需要一个int,因此将您的输入重新解释为有符号值。

于 2010-09-29T19:39:27.977 回答
1

将这两行附加到代码的末尾,您就会明白发生了什么。

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);
于 2010-09-30T00:30:35.907 回答