为什么char换成int就不一样了?

char的我是知道的,但为什么换成int数字就变了。。我知道int的时候我这样做,只表示了1个字节的内容,还剩3个字节没弄,但为什么就是这个结果... char的我是知道的,但为什么换成int数字就变了。。我知道int的时候我这样做,只表示了1个字节的内容,还剩3个字节没弄,但为什么就是这个结果 展开
 我来答
kill_ni_ma
2021-06-09 · 超过24用户采纳过TA的回答
知道答主
回答量:56
采纳率:75%
帮助的人:14.8万
展开全部

char类型的变量保存的是有符号的整形数据

char a = 0x83;  /*0b10000011*/ 这个数据的最高位为1,作为一个有符号数,最高位是符号位,

char 在转成int的时候, 如果char类型变量的最高位为1,则补全的字节填充0xFF,反之填充0x00,

所以你的a 由一个字节的0x83转换成 int的时候,变成了 0xFFFFFF83

格里编程办公技巧
科技发烧友

2021-06-09 · 编程、办公知识分享与学习
格里编程办公技巧
采纳数:434 获赞数:879

向TA提问 私信TA
展开全部
char是一个字节而且是有符号数,只要超过0x7F也就是127的数转换为int都是负数,它的值范围是-128到127。
int 是4个字节一般,超过7FFFFFFF也是负数。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
一剑出血
高粉答主

2021-06-09 · 醉心答题,欢迎关注
知道大有可为答主
回答量:5.7万
采纳率:78%
帮助的人:1.7亿
展开全部
当0x83、0x03、0xFE作为有符号字符型解析时,按照8位补码解析,分别代表-125、+3、-2。当强制转换为有符号整型时,强制转换会保持数值不变,即仍为-125、+3、-2,临时变量内容分别为0xFFFF FF83、0x0000 0003、0xFFFF FFFE。
当0x83、0x03、0xFE作为有符号整型解析时,按照32位补码解析,分别代表+131、+3、+254。
相关的内容,你可以找一本计算机基础或者C语言的书,看看前面两章基础部分。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式