早教吧 育儿知识 作业答案 考试题库 百科 知识分享

unsignedintb=65535;printf(“%d”,b);的结果为什么是-1啊

题目详情
unsigned int b=65535;printf(“%d”,b);的结果为什么是-1啊
▼优质解答
答案和解析
在无符号整型中表示65535,其二进制数是1111 1111 1111 1111.
而转化为有符号的话,1111 1111 1111 1111表示的数是多少呢。
我们知道,在有符号的时候,负数的表示是原码取反加1.那么我们来反推1111 1111 1111 1111等于多少。
首先因为最高为是1,所以1111 1111 1111 1111表示的是负数,那么1111 1111 1111 1111-1= 1111 1111 1111 1110,再取反,得到0000 0000 0000 0001.所以1111 1111 1111 1111 是-1.
所以输出结果是-1.
请高手指点。