C语言中,把-3赋值给unsigned定义的变量得到的值是多少,为什么?

如题所述

以16位为例来分析,-3的补码是:1111  1111  1111 1101,其中最高位为符号位,0为正,1为负,现在如果把-3赋值给无符号的变量,那么符号位就变成数值位了,输出的结果就是10进制数的65533。示例程序如下:

#include <stdio.h>
int main()
{
unsigned short a=-3;
printf("%u\n",a);
    return 0;
}

输出结果:

65533

温馨提示:答案为网友推荐,仅供参考