0

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

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

我试过把 float angle = 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();
}
4

2 回答 2

2

因为float angle是本地计算方法并隐藏int angle在全局范围内。int angle没有初始化为任何东西。

于 2013-03-07T22:38:05.057 回答
0

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

float angle = angle + 3;
于 2013-03-07T22:39:05.837 回答