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有符号? 展开
 我来答
悉鑫善广
2013-08-03 · TA获得超过3631个赞
知道大有可为答主
回答量:3006
采纳率:34%
帮助的人:219万
展开全部
  输出值为-1。
  原因:
  1、在C语言中整型常量的数据类型默认为int,所以unsigned
int
a
=
-1中,-1的类型是int类型。实际上是有一个隐式转换,即将int类型转成unsigned
int类型。
这个转换的意义不大,因为没有超出unsigned类型的表示范围,所以a的机器码依然是-1的机器码。
  2、printf输出函数的控制字符是%d,即输出有符号数,所以结果是-1,如果要输出无符号数,请使用:
printf("%u\n", a);
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式