完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我定义了两个长度为1200的double型数组 用程序对它进行赋值 打印总是出现nan 要么就是数据不对 怎么解决啊 是不是数据超出了代码段的长度 怎么解决呢 希望原子哥解惑哦
|
|
相关推荐
12个回答
|
|
|
|
|
|
得 看代码。。。
|
|
|
|
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("rn the data is111: %frn",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("rn the data is: %f rn",xiaoyu_2000[j]); } printf("rn the data is: completed rn"); } |
|
|
|
还请原子哥帮我看看 谢谢了
|
|
|
|
恩恩 我在试试
|
|
|
|
float encoder_1,encoder_2;
把encoder_1和encoder_2初始化时候 赋值为0,试一试; 这两个变量是局部变量,初始化不一定为0,所以这句话encoder_1+=0.05; 这个结果就无法预计了; |
|
|
|
同意楼上,局部变量你还没赋值就开始+=了,那肯定出问题啊,你不赋值,他会是内存里某个不可预知的值,=你算结束,肯定都是无规律的乱七八糟的,我觉的你这程序不是在板子上跑把,在VC6.0上run就可以的,学会单步调试,你不信在你encoder_1+=0.05 之前+个断点看看,他最初是个什么值你就明白了。
|
|
|
|
是在板子上用的 想初始化一个表 C语言不是规定定义变量时不赋初值时 默认为0 吗
|
|
|
|
|
|
|
|
试过了 直接赋值能成功 打印也没有问题 感谢原子哥
|
|
|
|
看看代码先
|
|
|
|
申请内存没有
|
|
|
|
只有小组成员才能发言,加入小组>>
请问下图大疆lightbridge2遥控器主板电源芯片型号是什么?
4465 浏览 1 评论
使用常见的二极管、三极管和mos做MCU和模组的电平转换电路,但是模组和MCU无法正常通信,为什么?
341浏览 2评论
为了提高USIM卡电路的可靠性和稳定性,在电路设计中须注意的点有哪些?
342浏览 2评论
367浏览 2评论
360浏览 2评论
407浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-20 13:52 , Processed in 1.041127 second(s), Total 70, Slave 64 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号