作业帮 > 综合 > 作业

int a=-2; printf("%u",a);输出为:65534.为什么?

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/24 09:31:10
int a=-2; printf("%u",a);输出为:65534.为什么?
%u为以无符号十进制输出.无符号整数能表示的数范围是0-65535,即对应的二进制数0-1111111111111111(16个1).
int a=-2;a为有符号的整型,以1111111111111111(16个1)的二进制数存储.(-2二进制表示为10000000000000010,负数在计算机中用补码表示,即1111111111111110).如果用%d输出a,则为-2,但是转换成无符号整数%u输出,1111111111111110(原来的有符号整数-1)被解释成1111111111111110(无符号整数65534),输出结果为65534