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)