OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4715|回复: 12

数组问题11111

[复制链接]

8

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
122
金钱
122
注册时间
2014-10-10
在线时间
17 小时
发表于 2015-7-19 11:29:57 | 显示全部楼层 |阅读模式
5金钱
我定义了两个长度为1200的double型数组  用程序对它进行赋值  打印总是出现nan  要么就是数据不对  怎么解决啊  是不是数据超出了代码段的长度  怎么解决呢  希望原子哥解惑哦

最佳答案

查看完整内容[请看2#楼]

回复【4楼】信奉3: --------------------------------- 看代码没问题,倒是你的计算公式,是不是存在问题,就没推导了。 你可以直接赋值,定值试试。验证下是赋值问题,还是公式问题。
天道酬勤
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2015-7-19 11:29:58 | 显示全部楼层
回复【4楼】信奉3:
---------------------------------
看代码没问题,倒是你的计算公式,是不是存在问题,就没推导了。
你可以直接赋值,定值试试。验证下是赋值问题,还是公式问题。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2015-7-19 23:17:59 | 显示全部楼层
得 看代码。。。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

8

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
122
金钱
122
注册时间
2014-10-10
在线时间
17 小时
 楼主| 发表于 2015-7-20 15:41:18 | 显示全部楼层
回复【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");
}
天道酬勤
回复

使用道具 举报

8

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
122
金钱
122
注册时间
2014-10-10
在线时间
17 小时
 楼主| 发表于 2015-7-20 15:42:20 | 显示全部楼层
回复【3楼】信奉3:
---------------------------------还请原子哥帮我看看 谢谢了
天道酬勤
回复

使用道具 举报

8

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
122
金钱
122
注册时间
2014-10-10
在线时间
17 小时
 楼主| 发表于 2015-7-21 09:53:52 | 显示全部楼层
恩恩 我在试试
天道酬勤
回复

使用道具 举报

1

主题

5

帖子

0

精华

初级会员

Rank: 2

积分
82
金钱
82
注册时间
2015-7-21
在线时间
7 小时
发表于 2015-7-21 13:57:22 | 显示全部楼层
回复【6楼】信奉3:
---------------------------------
float encoder_1,encoder_2;

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

这两个变量是局部变量,初始化不一定为0,所以这句话encoder_1+=0.05; 这个结果就无法预计了;
回复

使用道具 举报

39

主题

598

帖子

0

精华

高级会员

Rank: 4

积分
875
金钱
875
注册时间
2013-12-18
在线时间
41 小时
发表于 2015-7-21 14:07:01 | 显示全部楼层
同意楼上,局部变量你还没赋值就开始+=了,那肯定出问题啊,你不赋值,他会是内存里某个不可预知的值,=你算结束,肯定都是无规律的乱七八糟的,我觉的你这程序不是在板子上跑把,在VC6.0上run就可以的,学会单步调试,你不信在你encoder_1+=0.05 之前+个断点看看,他最初是个什么值你就明白了。
回复

使用道具 举报

8

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
122
金钱
122
注册时间
2014-10-10
在线时间
17 小时
 楼主| 发表于 2015-7-21 16:55:30 | 显示全部楼层
回复【8楼】w417074951:
---------------------------------
是在板子上用的  想初始化一个表    C语言不是规定定义变量时不赋初值时 默认为0 吗
天道酬勤
回复

使用道具 举报

8

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
122
金钱
122
注册时间
2014-10-10
在线时间
17 小时
 楼主| 发表于 2015-7-21 17:08:57 | 显示全部楼层


刚试了下 是0   
天道酬勤
回复

使用道具 举报

8

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
122
金钱
122
注册时间
2014-10-10
在线时间
17 小时
 楼主| 发表于 2015-7-21 17:10:21 | 显示全部楼层
回复【5楼】正点原子:
---------------------------------
试过了 直接赋值能成功  打印也没有问题  感谢原子哥
天道酬勤
回复

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
20
金钱
20
注册时间
2016-3-5
在线时间
3 小时
发表于 2016-3-5 16:56:25 | 显示全部楼层
看看代码先
回复

使用道具 举报

16

主题

98

帖子

0

精华

初级会员

Rank: 2

积分
100
金钱
100
注册时间
2012-7-29
在线时间
19 小时
发表于 2016-4-27 23:11:20 | 显示全部楼层
申请内存没有
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-23 09:57

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表