我想知道为什么这段代码会输出-5,因为它们属于不同类型,而考虑到2的补码,-5是无符号的非常大的
#include <stdio.h>
int main()
{
unsigned int x = -5; //
printf("%d", x);
}
我很困惑,如何将signed int转换为unsigned?谢谢!
答案 0 :(得分:0)
将-5
分配给unsigned int
时,会发生初始转化。此时,根据建议,您有一个非常大的数字(实际值取决于您机器上int
的位数)。
第二次&#34;转换&#34;真的是一种解释。要求printf
取一组位并将它们打印出来,就好像它们代表无符号整数值一样。这就是输出为-5