C语言中的内存问题(51单片机应用中出现的问题)
来源:互联网 发布:淘宝怎么交电费 编辑:程序博客网 时间:2024/05/29 19:40
这几天跟同学一起做模电大作业,有一次用到久违的单片机,使用C语言编写单片机控制程序,有一块用到数模转换物体重量并显示到lcd1602上,其中出现了一个小问题,代码如下
void ValueToString(unsigned char *str, unsigned char val){ unsigned long int sum; sum = (val*500) / 255; str[0] = (sum/100) + '0'; str[1] = (sum/10%10) + '0'; str[2] = '.'; str[3]=(sum%10)+'0'; str[4] = 'k'; str[5]='g'; str[6] = '\0'; }
先解释一下代码,我希望将PCF8591检测到的电压值乘5后保留一位小数输出,按理来说最多应该输出50kg,但每次都会出现在25.6kg以后不能正常输出,开始时很困扰,我明明将sum定义位unsigned long int 类型的了,应该没有理由会溢出呀,难道1602有毒,卧槽,好绝望……
躺在床上突然觉得哪里不对,8591是8位ADC,也就是说val最大是255,那val*500的中间结果是127500,这个结果会放在哪里呢,肯定是放在val的内存空间呀,而val是char 型,只有255个空间,这肯定溢出啊,所以我们应该在最初时就将val扩容,
`unsigned long int sum=val;
这样就可以了。
阅读全文
1 0
- C语言中的内存问题(51单片机应用中出现的问题)
- 单片机C语言中while(1)的问题
- C语言中出现的问题
- 调试单片机程序中遇到的c语言指针问题
- c语言中的内存问题
- C语言-循环中套用scanf()出现的问题
- 单片机C语言while(1)的问题
- 单片机C语言while(1)的问题
- 51 单片机 C 语言串行双机通信的问题
- C语言内存分配问题和C语言中的内存
- C语言内存分配问题和C语言中的内存
- C语言内存分配问题和C语言中的内存
- C语言内存分配问题和C语言中的内存
- C语言内存分配问题和C语言中的内存
- c语言中的内存对齐问题
- [Pointer]在C语言中进行float型与uint8型数组内存拷贝时出现的问题与解决
- 关于C语言中数据结构的内存对齐问题
- C语言中内存动态分配应注意的问题
- 安卓反编译入门详解
- 将网站打造成单页面应用SPA
- 【C++】【LeetCode】24. Swap Nodes in Pairs
- Eclipse Memory Analyzer tool(MAT)分析内存泄露(一)
- 机器学习——决策树 知识点总结
- C语言中的内存问题(51单片机应用中出现的问题)
- 线性表——链式存储结构之单链表
- java面试题持续更新
- oracle 删除用户时" 表或视图不存在"的问题
- ML算法(常见机器学习算法公式)
- Struts2类型转换器
- vue1.0与vue2.0区别之组件通信
- For循环效率
- Linux脚本学习攻略18