OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3433|回复: 5

请教大家一个关于数据溢出的问题~

[复制链接]

119

主题

439

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1185
金钱
1185
注册时间
2015-9-18
在线时间
422 小时
发表于 2016-1-7 23:42:42 | 显示全部楼层 |阅读模式
1金钱
如下图所示:使用的是stm32103开发板,MDK开发平台
按道理说:这里的char应该溢出了,为什么还是能显示0xff呢?
恳请大神指点迷津~~~

QQ截图20160107233827.png
电子爱好者
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11555
金钱
11555
注册时间
2014-4-1
在线时间
1317 小时
发表于 2016-1-7 23:51:08 | 显示全部楼层

糊涂了,
你认为该怎样?


回复

使用道具 举报

27

主题

711

帖子

0

精华

版主

Rank: 7Rank: 7Rank: 7

积分
12573
金钱
12573
注册时间
2015-11-5
在线时间
2151 小时
发表于 2016-1-8 00:25:57 | 显示全部楼层
u8类型的数据0xff溢出???别逗我好吗,u8类型数据最大值是0xff,比0xff大才会出现你所说的溢出
拿来长岛冰茶换我半晚安睡
回复

使用道具 举报

10

主题

561

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1839
金钱
1839
注册时间
2014-6-27
在线时间
982 小时
发表于 2016-1-8 08:38:43 | 显示全部楼层
你应该要看到数据在内存存放的本质是什么,你在内存中存放什么数据,最终都是以二进制形式存放,char是有符号8位,你把数据从低位开始取8位放进去,但是内存数据显示给我们看的是十六进制,你放了8个1,所以它显示8个1个你看。
其次,存放显示如此了,你数据只存放没有意义,你要用,用就有运算,运算就要有规则,你运算的时候CPU的运算器就按照规则办事了,就要看具体类型了,至于是什么值,你再看对应的类型,应该不会纠结了。
回复

使用道具 举报

119

主题

439

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1185
金钱
1185
注册时间
2015-9-18
在线时间
422 小时
 楼主| 发表于 2016-1-8 09:03:32 | 显示全部楼层
TinyBoy 发表于 2016-1-8 08:38
你应该要看到数据在内存存放的本质是什么,你在内存中存放什么数据,最终都是以二进制形式存放,char是有符 ...

再次请教大神:问题1:听上面大神的意思:内存的数据存储是不考虑实际数据规则的,例如:chara = 0xff,它不会去考虑最前面1位是符号位,还是表示实际的数值,是这个意思吗?
问题2:如果在运算的时候才需要考虑实际规则,那么如下temp应该溢出啊
小弟愚钝,恳请大神不惜赐教~~~

QQ截图20160108085844.png
电子爱好者
回复

使用道具 举报

10

主题

561

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1839
金钱
1839
注册时间
2014-6-27
在线时间
982 小时
发表于 2016-1-8 09:11:07 | 显示全部楼层
liuchang 发表于 2016-1-8 09:03
再次请教大神:问题1:听上面大神的意思:内存的数据存储是不考虑实际数据规则的,例如:chara = 0xff,它不会 ...

你运算过了?看结果啊,结果看十进制,存储看十六进制。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-22 04:04

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表