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

我的代码:

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运行时的uEntryunsigned 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