问个ICC AVR中c语言类型转换的问题——为啥我的计算机过不对

[复制链接]
2625|3
 楼主| alloy518 发表于 2009-1-18 09:21 | 显示全部楼层 |阅读模式
有这么一个函数,输入是2个int型数,计算后返回一个int类型数据,函数如下

int vot_to_ris(int SenVot,int VerfVot)
{
 float temp1;
 int temp;                                          
 temp1 = (390 * SenVot) / ((2 * VerfVot) - SenVot);
 temp = (int)(temp1);
 return temp; 
}

其中SenVot和VerfVot的取值都是0-0x1FF;然后函数返回的int类型值通过/255和%255的方式分别取出高低位利用putchar送出

目前的问题是:当SenVot较大的时候得到的数据值不对,小的时候就没啥问题,我个人估计是在计算过程中类型转换的问题,但是修改了好几次问题依旧,大家能否帮我看看应该怎么处理,谢谢
dai_weis 发表于 2009-1-18 14:42 | 显示全部楼层

定义成unsigned int

computer00 发表于 2009-1-18 17:48 | 显示全部楼层

改一下:

temp1 = (390.0 * SenVot) / ((2.0 * VerfVot) - SenVot);
hotpower 发表于 2009-1-18 19:10 | 显示全部楼层

最好别用或少用float

int vot_to_ris(int SenVot,int VerfVot)
{
long temp1;
int temp;                                          
temp1 = (195 - VerfVot) * SenVot / VerfVot;
temp = (int)(temp1);
return temp; 
}
您需要登录后才可以回帖 登录 | 注册

本版积分规则

19

主题

24

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部