找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

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

查看数: 2796 | 评论数: 9 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2021-4-19 22:39

正文摘要:

为什么int型数据运算后取整送给char型数组,数值与实际计算数值不同?比如图中,A=0x0D69,运算后整数部分应为54,为什么Ac数组中的值是0x05?求解答!

回复

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轮回最 ...

明白了,感谢大佬!
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-20 00:10
birdzhyli 发表于 2021-4-20 00:08
我也没太明白,你可以单独拿出来,设置一个整数一个uchar,给它们赋值,看看结果,分析一下原因,或者百度看 ...

我已经搞出来了,我把后面的×64/4000换成了直接×0.016,就出来了。谢谢你的回复!
ID:889094 发表于 2021-4-20 00:08
我也没太明白,你可以单独拿出来,设置一个整数一个uchar,给它们赋值,看看结果,分析一下原因,或者百度看看有没有高手解释

评分

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

查看全部评分

ID:901339 发表于 2021-4-19 23:59
不好意思,我没有问清楚。那两句Vc[i]=i;AC[j]=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:53
birdzhyli 发表于 2021-4-19 23:49
这个图看不明白,数组先赋值,再=i,后面再=j,前面的赋值意义何在?

不好意思,我是把那两句注释掉了,绿色那里
ID:901339 发表于 2021-4-19 23:52
birdzhyli 发表于 2021-4-19 23:49
这个图看不明白,数组先赋值,再=i,后面再=j,前面的赋值意义何在?

不用看ij,就是运算然后把值放入数组而已
ID:889094 发表于 2021-4-19 23:49
这个图看不明白,数组先赋值,再=i,后面再=j,前面的赋值意义何在?

评分

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

查看全部评分

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

Powered by 单片机教程网

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