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

时间:2013-03-07 22:36:15

标签: lego mindstorms nxc

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

sub可以被调用最多3次,每次调用sub时,angle变量需要从0开始。

我试过把浮角= 0;或者只是角度= 0;在每个可以想象的地方但没有任何作用。我甚至尝试使用int angle = 0;在多个地方。

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();
}

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

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

float angle = angle + 3;