char a = 300,在内存中是怎样存储的?

suxiuapple 2011-04-22 10:30:20
char a = 300;
printf("%d\n", a);

a 会输出44,为什么?能解释的具体点吗?
...全文
861 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Sou2012 2011-04-22
  • 打赏
  • 举报
回复 1
300 转化为二进制 为: 1 0010 1100

char是一个字节,最大值为256, 300已经溢出了, 取低8位的值。

0010 1100 转换到十进制等于44

所以

char a = 300;
printf("%d", a);
输出
44


hzy694358 2011-04-22
  • 打赏
  • 举报
回复
取模求余
pathuang68 2011-04-22
  • 打赏
  • 举报
回复
=300 - 2的8次方 = 300 - 256 = 44
無_1024 2011-04-22
  • 打赏
  • 举报
回复
越界 截取300二进制低八位的值
robertbo 2011-04-22
  • 打赏
  • 举报
回复
char a = 300;
越界了,char 类型最大能到255,
Loren 2011-04-22
  • 打赏
  • 举报
回复
char 是8bit,也就是说最大是256,你给300,溢出了。

300=100101100
44 = 101100
luciferisnotsatan 2011-04-22
  • 打赏
  • 举报
回复
低8位的值
qq361008646 2011-04-22
  • 打赏
  • 举报
回复

char的范围是一个字节啊,8位

300转换为二进制是1,0010,1100.输出至截取八位,就是0010,1100---->44
演地 2011-04-22
  • 打赏
  • 举报
回复
当一个字符类型赋值为整数会用ASCII来对照。

70,020

社区成员

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

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