计算机如何将一些signed int转换为unsigned int

时间:2017-01-07 11:56:17

标签: c

我想知道为什么这段代码会输出-5,因为它们属于不同类型,而考虑到2的补码,-5是无符号的非常大的

#include <stdio.h>
    int main()
    {
        unsigned int x = -5; //
        printf("%d", x);

    }

我很困惑,如何将signed int转换为unsigned?谢谢!

1 个答案:

答案 0 :(得分:0)

-5分配给unsigned int时,会发生初始转化。此时,根据建议,您有一个非常大的数字(实际值取决于您机器上int的位数)。

第二次&#34;转换&#34;真的是一种解释。要求printf取一组位并将它们打印出来,就好像它们代表无符号整数值一样。这就是输出为-5

的原因