C:将签名转换为无符号
其实我(可能)是一个“简单”的问题。 所以我不知道如何将有符号整数转换为无符号整数。
我的代码:
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);