打印

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

[复制链接]
1806|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

粉丝