找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1796|回复: 9
收起左侧

单片机C语言数值转换问题,int取整后给char型数组

[复制链接]
ID:901339 发表于 2021-4-19 22:39 | 显示全部楼层 |阅读模式
为什么int型数据运算后取整送给char型数组,数值与实际计算数值不同?比如图中,A=0x0D69,运算后整数部分应为54,为什么Ac数组中的值是0x05?求解答!

1.png
2.png
3.png
回复

使用道具 举报

ID:889094 发表于 2021-4-19 23:49 | 显示全部楼层
这个图看不明白,数组先赋值,再=i,后面再=j,前面的赋值意义何在?

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:901339 发表于 2021-4-19 23:52 | 显示全部楼层
birdzhyli 发表于 2021-4-19 23:49
这个图看不明白,数组先赋值,再=i,后面再=j,前面的赋值意义何在?

不用看ij,就是运算然后把值放入数组而已
回复

使用道具 举报

ID:901339 发表于 2021-4-19 23:53 | 显示全部楼层
birdzhyli 发表于 2021-4-19 23:49
这个图看不明白,数组先赋值,再=i,后面再=j,前面的赋值意义何在?

不好意思,我是把那两句注释掉了,绿色那里
回复

使用道具 举报

ID:889094 发表于 2021-4-19 23:53 | 显示全部楼层
AC[j]=j,AC[0]应该是0啊,怎么会是0x05?

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:901339 发表于 2021-4-19 23:59 | 显示全部楼层
不好意思,我没有问清楚。那两句Vc[i]=i;AC[j]=j;是注释掉的,不用看。
回复

使用道具 举报

ID:889094 发表于 2021-4-20 00:08 | 显示全部楼层
我也没太明白,你可以单独拿出来,设置一个整数一个uchar,给它们赋值,看看结果,分析一下原因,或者百度看看有没有高手解释

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:901339 发表于 2021-4-20 00:10 | 显示全部楼层
birdzhyli 发表于 2021-4-20 00:08
我也没太明白,你可以单独拿出来,设置一个整数一个uchar,给它们赋值,看看结果,分析一下原因,或者百度看 ...

我已经搞出来了,我把后面的×64/4000换成了直接×0.016,就出来了。谢谢你的回复!
回复

使用道具 举报

ID:332214 发表于 2021-4-20 15:47 | 显示全部楼层
A的值0x0D69==3433
运算公式A*64/4000/1  
其中A*64 值大于 65535 (uint  A),累加器会多3个65535轮回最终表现值为23107
最终运算结果5.77--又因Ac是uchar类型 小数点舍去 其值为 5
其实上面的公式可以写为
Ac[j] = (float)(A*64.0/4000.0);

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:901339 发表于 2021-4-27 23:24 | 显示全部楼层
啊哈哈123 发表于 2021-4-20 15:47
A的值0x0D69==3433
运算公式A*64/4000/1  
其中A*64 值大于 65535 (uint  A),累加器会多3个65535轮回最 ...

明白了,感谢大佬!
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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