打印

小女子寻求高手这个DSP2808计算的问题!!!

[复制链接]
1908|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
qianzi|  楼主 | 2012-2-20 10:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
下面数据的第二列temp数值有正有负,但是下面的符号函数运算却又出现了问题,得出的za_f都是负值,请问大家是什么问题呢??拜托各位高手啦!!
temp=p->ia_esti-p->ialpha;
     if(temp>0)
         p->za_f=p->k;//p->k是一个参数,值为100
else if(temp==0)
          p->za_f=0;
   else
             p->za_f=-p->k;
数据表:
1,23354,3456
2,25483,3618
3,28057,3888
4,30522,4212
5,32678,4428
6,-30101,4860
7,-26346,5238
8,-22379,5670
9,-18049,6156
10,-13900,6534
11,-11162,6750
12,-8890,7074
13,-6899,7290
14,-4784,7452
15,-2884,7668
16,-1479,7776
17,-1090,7776
18,-1891,7668
19,-3194,7452
20,-5187,7182
21,-7280,6912
22,-9527,6750
23,-11760,6480
24,-14323,6102
25,-17681,5778
26,-21135,5400
27,-24609,4968
28,-28374,4536
29,-31717,4212
30,31642,3996
31,29673,3834
32,27696,3564
33,25863,3402
34,24015,3240
35,22062,3024

相关帖子

沙发
JerryWu75| | 2012-2-20 15:53 | 只看该作者
看看变量的定义是signed的还是unsigned的,然后查查编译器默认的变量编译方式是signed的还是unsigned的。把程序改成这样再试试看
(signed int)temp=(signed int)(p->ia_esti)-(signed int(p->ialpha);
     if((signed int)temp>0)
         (signed int)(p->za_f)=(signed int)(p->k);//p->k是一个参数,值为100
else if((signed int)temp==0)
          (signed int)(p->za_f)=0;
   else
             (signed int)(p->za_f)=-(signed int)(p->k);

使用特权

评论回复
板凳
qianzi|  楼主 | 2012-2-23 11:17 | 只看该作者
我定义的变量是INT32S 型的,是符号型的变量,给位高手看看还有什么可能的原因呢?不甚感激!

使用特权

评论回复
地板
JerryWu75| | 2012-2-24 16:56 | 只看该作者
INT32S的真实定义是什么,是不是signed int? 你查查编译器中将singned int是解释为16位有符号的,还是32位有符号的?

使用特权

评论回复
5
tylhc002| | 2012-2-25 14:47 | 只看该作者
1# qianzi

使用特权

评论回复
6
qianzi|  楼主 | 2012-2-25 19:01 | 只看该作者
是32位的有符号整型、、、、、、、、、、、、、、、、、、、、、

使用特权

评论回复
7
highgear| | 2012-2-27 00:45 | 只看该作者
把问题描述清楚,不要让大家把时间浪费在无谓的猜测上。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

6

帖子

0

粉丝