首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在NXC中的循环中使用后将变量重置为0

如何在NXC中的循环中使用后将变量重置为0
EN

Stack Overflow用户
提问于 2013-03-08 06:36:15
回答 2查看 326关注 0票数 0

由于一些奇怪的原因,当循环结束时,变量“角度”不会重置回0。所有的数学运算只是计算c= sqrt(a^2 + b^2 - 2abCos(theta)),机器人不会在一行中完成所有的数学运算。在完整的代码中,a和b都是变化的变量,并且都基于超声波传感器输入。

sub最多可以被调用3次,并且每次调用sub时角度变量都需要从0开始。

我试着把浮动角度= 0;或者只是角度= 0;放在每个可以想象的地方,但都不起作用。我甚至尝试过在多个地方使用int angle = 0;。

代码语言:javascript
复制
int angle, a, b, c, csqr, theta, cosTheta, aSqrd, bSqrd, atmb, twoab;
#define pi 3.14159265359

sub calculate()  
{

 repeat(2)
 {
 float a = 172.42;
 float angle = angle + 3;
 float theta = ((angle)*(pi/180));
 float b = 172.42;
 float cosTheta = cos(theta);
 float aSqrd = pow(a, 2);
 float bSqrd = pow(b, 2);
 float atmb = (a * b);
 float twoab = (2 * atmb);
 float csqr = ((aSqrd + bSqrd) - (twoab * cosTheta));
 float c = sqrt(csqr);
 NumOut(0,0,angle);
 Wait(3000);
 ClearScreen();
 }
 float angle = 0;

}

task main()
{
     calculate();
     ClearScreen();
     calculate();
}
EN

回答 2

Stack Overflow用户

发布于 2013-03-08 06:38:05

因为float angle对于calculate方法是局部的,并且在全局范围内隐藏了int angleint angle未初始化为任何值。

票数 2
EN

Stack Overflow用户

发布于 2013-03-08 06:39:06

您在repeat(2)循环中有一个未初始化的变量。

代码语言:javascript
复制
float angle = angle + 3;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15283160

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档