C:将签名转换为无符号

bit*_*ler 0 c signed unsigned-integer

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

我的代码:

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

如果我将无符号值发送到控制台(参见我的上一个代码行),我总是得到一个有符号整数.

你能帮助我吗?

非常感谢!

亲切的问候,亲

ken*_*ytm 9

printf("Unsigned : %u\n", uEntry);
//                 ^^
Run Code Online (Sandbox Code Playgroud)

您必须使用说明%u符告诉printf运行时它uEntry是一个unsigned int.如果您使用%dprintf函数将期望a int,从而将您的输入重新解释回有符号值.

  • @pro:当您的格式说明符与要打印的值的类型不匹配时,行为未定义且结果无意义.即当你用`%u`打印`-13`时,结果毫无意义.与原始尝试使用`%d`打印无符号值一样.如果您希望输出有意义,请始终使用正确的格式说明符:`%u`表示`unsigned int`,`%d`表示`signed int`. (2认同)