单片机数据类型问题

2019-03-24 17:37发布

最近做了温度采集程序,因为需要所以现在想将float型温度数据强转成int型
然后在强转的过程中,发现只要tt = temp*0.0625;  这一行代码
强制转换代码就执行不了,出现*** error 65: access violation at C:0xEE00 : no 'execute/read' permission错误
然后将这句代码注释掉就可以随意的强制转换
此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
19条回答
星空下的吖米
1楼-- · 2019-03-26 22:39
lcofjp 发表于 2016-5-18 12:11
是不是printf的问题,难道你的printf不支持浮点数?

  浮点的时候可以打印,然后强转成int的时候就不行了
lcofjp
2楼-- · 2019-03-27 04:06
 精彩回答 2  元偷偷看……
星空下的吖米
3楼-- · 2019-03-27 09:16
lcofjp 发表于 2016-5-18 12:29
最好把出问题的程序全部都贴出来。现在也看不到printf函数,而且你的函数里虽然用到了浮点数,但是完全没 ...

请问你那有Keil4吗   可以加你QQ把代码发给你吗  很奇怪  只是一句代码就搞到强制转换不了
lcofjp
4楼-- · 2019-03-27 15:06
星空下的吖米 发表于 2016-5-18 12:47
请问你那有Keil4吗   可以加你QQ把代码发给你吗  很奇怪  只是一句代码就搞到强制转换不了

目前看就是哪里有异常就从哪里入手,既然异常了,肯定是有变量或者代码超出正常地址范围了。要找关键点。我电脑并没安装keil。
星空下的吖米
5楼-- · 2019-03-27 15:57
 精彩回答 2  元偷偷看……
huaiqiao
6楼-- · 2019-03-27 20:22
星空下的吖米 发表于 2016-5-18 11:40
实际无法运行,调试的时候出了上面那个错误,
int Get_Tmp(uchar d)                   //获取温度get t ...

tt = temp*0.0625;
楼主这个地方,如果报错你解决不了,还有种方法。你不用强制类型转换,可以考虑tt就是float型的。然后到时候把结果乘以1000放大,然后要看你是数码管显示还是液晶屏显示了,如果是数码管显示,这个数字(刚才乘以1000后得到的数字),就要求其整数部分和小数部分了。
还有,论坛里有相应的帖子,楼主也可以参考哦。

一周热门 更多>