#include<stdio.h> main() {unsigned int a=65535; printf("a=%d\n",a); } 运算结果 a=-1

#include<stdio.h>main(){unsignedinta=65535;printf("a=%d\n",a);}运算结果a=-1为什么是等于-1呢?... #include<stdio.h>
main()
{unsigned int a=65535;
printf("a=%d\n",a);
}
运算结果
a=-1
为什么是等于-1呢?
展开
 我来答
百度网友7ab0cc7a9
2010-02-21 · 超过18用户采纳过TA的回答
知道答主
回答量:38
采纳率:100%
帮助的人:34.6万
展开全部
隐式转换。
这段程序假设unsigned int占2个字节,16位。
具体分析如下:
无符号数65535即二进制1111 1111 1111 1111,所有位都是数值位。
而输出时,并没有对a进行修改,而是将1111 1111 1111 1111(65535),当作有符号数时,最高位被具体看作符号位了,所对应的有符号数就是-1,应该将printf中的%d改成%u即可,。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式