C语言中 unsigned int a=-1 printf(“-1=%d\n”,a); 为什么输出值

C语言中unsignedinta=-1printf(“-1=%d\n”,a);为什么输出值还是-1有符号?... C语言中
unsigned int a=-1
printf(“-1=%d\n”,a);
为什么输出值还是-1有符号?
展开
 我来答
吉祥二进制
高粉答主

推荐于2017-09-24 · 科技改变生活,生活改变科技。
吉祥二进制
采纳数:33926 获赞数:84578

向TA提问 私信TA
展开全部

  输出值为-1。

  原因:

  1、在C语言中整型常量的数据类型默认为int,所以unsigned int a = -1中,-1的类型是int类型。实际上是有一个隐式转换,即将int类型转成unsigned int类型。 这个转换的意义不大,因为没有超出unsigned类型的表示范围,所以a的机器码依然是-1的机器码。

  2、printf输出函数的控制字符是%d,即输出有符号数,所以结果是-1,如果要输出无符号数,请使用:

printf("%u\n", a);
LLChina99
2012-07-11 · TA获得超过1483个赞
知道小有建树答主
回答量:574
采纳率:0%
帮助的人:524万
展开全部
unsigned int a=-1

说到底,a=0xffffffff【4294967295】
而0xffffffff当做有符号数,就是-1.

你可以通过
printf(“-1=%d\n”,a);【%d有符号数显示】

printf(“-1=%u\n”,a);【%u无符号数显示】
来对比
【("等需要改成英文字符】
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
qyjubriskxp
2012-07-11 · TA获得超过892个赞
知道小有建树答主
回答量:735
采纳率:0%
帮助的人:745万
展开全部
因为%d输出的是有符号数,printf根据%d把a当作有符号数来读了
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友e641ab5
2012-07-11 · TA获得超过107个赞
知道答主
回答量:37
采纳率:0%
帮助的人:21.9万
展开全部
你应该输出了"-1=-1"吧; %d换成%u试试。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式