char 转换成unsigned int

happyb060218 2011-03-21 11:01:15
void main()
{
char b=-1;
unsigned int a=0;
a=b;
printf("%d\n",a);

}

最后结果是-1.想不通,无符号int,怎么也轮不到是-1啊,也就是二进制的全1,难道unsigned没有起到作用?
...全文
439 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
sharptiger123 2011-03-21
  • 打赏
  • 举报
回复
printf("%u\n",a);
sharptiger123 2011-03-21
  • 打赏
  • 举报
回复
char b=-1;
unsigned int a=0;
a=(unsigned int)b;
a=4294967295
AnYidan 2011-03-21
  • 打赏
  • 举报
回复
int printf(char *format, 变元1 , 变元2 , ...)
函数p r i n t f在输出格式f o r m a t的控制下,将其变元进行转换与格式化,并在标准输出设备上打印
出来。它的返回值为所打印的字符数。

楼主在输出是又将 unsigned int 转换成了 int
NowDoIT 2011-03-21
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 bluesky12312388 的回复:]
a = b;这里的a = 0xFFFFFFFF
你输出的时候用的%d这是有有符号的,所以输出会是-1
如果要看到正确结果用%ud
[/Quote]
++
你可以用x%打印出2进制的情况,就明了了。
delphiwcdj 2011-03-21
  • 打赏
  • 举报
回复
[Quote=引用楼主 happyb060218 的回复:]
void main()
{
char b=-1;
unsigned int a=0;
a=b;
printf("%d\n",a);

}

最后结果是-1.想不通,无符号int,怎么也轮不到是-1啊,也就是二进制的全1,难道unsigned没有起到作用?
[/Quote]
%u试试
bluesky12312388 2011-03-21
  • 打赏
  • 举报
回复
a = b;这里的a = 0xFFFFFFFF
你输出的时候用的%d这是有有符号的,所以输出会是-1
如果要看到正确结果用%ud
wizard_tiger 2011-03-21
  • 打赏
  • 举报
回复
%d是有符号输出标志。
mtj520 2011-03-21
  • 打赏
  • 举报
回复
可以直接输出的啊..printf("%u\n",a);
yuyan_linger 2011-03-21
  • 打赏
  • 举报
回复
printf("%u\n",a);
你用的是有符号数的输出标志
yuyan_linger 2011-03-21
  • 打赏
  • 举报
回复
printf("%ud\n",a);

happyb060218 2011-03-21
  • 打赏
  • 举报
回复
求高手讲解

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧