char类型的变量以十六进制输出,如下,为什么要补1?
为什么大于0x80时要补1输出?#include<stdio.h>intmain(){chara=0x70,b=0xd0;printf("%#x,%#x\n",a,b);...
为什么大于0x80时要补1输出?
#include<stdio.h>
int main()
{
char a = 0x70,b=0xd0;
printf("%#x,%#x\n",a,b);
}
上面的结果输出为0x70,0xffffffd0 展开
#include<stdio.h>
int main()
{
char a = 0x70,b=0xd0;
printf("%#x,%#x\n",a,b);
}
上面的结果输出为0x70,0xffffffd0 展开
3个回答
展开全部
因为char类型表示的范围是-128~+127,是有符号类型。
所以,当128~255之间的数赋值给char时,它就变成了“负数”,所以当它以更多位的二进制读取时,前位就会补1。
所以,当128~255之间的数赋值给char时,它就变成了“负数”,所以当它以更多位的二进制读取时,前位就会补1。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
char存储上限不够,只有0-127 ,即0-0x7f,所以当char a >0x7f的时候,%x会自动帮你扩大存储上限
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询