OpenEdv-开源电子网

标题: 数组问题11111 [打印本页]

作者: 信奉3    时间: 2015-7-19 11:29
标题: 数组问题11111
我定义了两个长度为1200的double型数组  用程序对它进行赋值  打印总是出现nan  要么就是数据不对  怎么解决啊  是不是数据超出了代码段的长度  怎么解决呢  希望原子哥解惑哦
作者: 正点原子    时间: 2015-7-19 11:29
回复【4楼】信奉3:
---------------------------------
看代码没问题,倒是你的计算公式,是不是存在问题,就没推导了。
你可以直接赋值,定值试试。验证下是赋值问题,还是公式问题。
作者: 正点原子    时间: 2015-7-19 23:17
得 看代码。。。
作者: 信奉3    时间: 2015-7-20 15:41
回复【2楼】正点原子:
---------------------------------
float xiaoyu_2000[1200];
float  dayu_2000[1200];


uint16_t clk, i_old,i_new;

void list(void)
{
  
float Angle_1,Angle_2;
float encoder_1,encoder_2; 
uint16_t i,j;
for(i=0;i<1200;i++)
{
 encoder_1+=0.05;
 Angle_1 = encoder_1*PI/180; 
 dayu_2000 = (Angle_1-atanf( L*(1-cos(Angle_1))/(S+L*sin(Angle_1))))*180/PI;

//printf("\r\n the data is111:  %f\r\n",dayu_2000);
}

for(j=0;j<1200;j++)
{

 encoder_2+=0.05;
 Angle_2 = encoder_2*PI/180; 
 xiaoyu_2000[j] = (Angle_2+atanf( L*(1-cos(Angle_2))/(S-L*sin(Angle_2))))*180/PI;
 //printf("\r\n the data is:  %f \r\n",xiaoyu_2000[j]);
}
printf("\r\n the data is:  completed \r\n");
}
作者: 信奉3    时间: 2015-7-20 15:42
回复【3楼】信奉3:
---------------------------------还请原子哥帮我看看 谢谢了
作者: 信奉3    时间: 2015-7-21 09:53
恩恩 我在试试
作者: 梦幻FLY    时间: 2015-7-21 13:57
回复【6楼】信奉3:
---------------------------------
float encoder_1,encoder_2;

把encoder_1和encoder_2初始化时候 赋值为0,试一试;

这两个变量是局部变量,初始化不一定为0,所以这句话encoder_1+=0.05; 这个结果就无法预计了;
作者: w417074951    时间: 2015-7-21 14:07
同意楼上,局部变量你还没赋值就开始+=了,那肯定出问题啊,你不赋值,他会是内存里某个不可预知的值,=你算结束,肯定都是无规律的乱七八糟的,我觉的你这程序不是在板子上跑把,在VC6.0上run就可以的,学会单步调试,你不信在你encoder_1+=0.05 之前+个断点看看,他最初是个什么值你就明白了。
作者: 信奉3    时间: 2015-7-21 16:55
回复【8楼】w417074951:
---------------------------------
是在板子上用的  想初始化一个表    C语言不是规定定义变量时不赋初值时 默认为0 吗
作者: 信奉3    时间: 2015-7-21 17:08
(, 下载次数: 0)