变量被错误地设置为204

时间:2018-10-24 19:13:46

标签: c++ arduino esp32

第一次使用SO。因此,我随便进行了编码,并启动了这个全局变量rC并将其设置为0。rC是一个计数器,但是当它需要做的时候,它就变成了独角戏。这是一些代码和输出(我正在编写Doit ESP32)

DEBUGPRINTLN3("Sampled xC");
DEBUGPRINTLN3(xC);
rC = 0;
Serial.println("rC before increment");
Serial.println(rC);
if(rC == 204) 
{
  Serial.println("WTF");
  rC = 0;
}
rC += 1;
dx = -dx;
xC = -xC;

在我寻找问题根源时添加了if语句(此错误使我的整个程序发疯,因为该计数器表示很多其他事情,包括它自己的重置)

这是串行输出:

14:48:23.017 -> Sampled xC
14:48:23.017 -> 299
14:48:23.017 -> rC before increment
14:48:23.017 -> 204
14:48:23.017 -> WTF
14:48:23.017 -> xC:
14:48:23.017 -> -299
14:48:23.017 -> HAS REVERSED
14:48:23.017 -> rC INCREMENTED 1
14:48:23.017 -> 1

我使用的“修复程序”非常糟糕,如果我更改其他一些变量,它将不起作用,但是在这种情况下,它确实起作用。 知道是什么原因造成的吗?

万一有人想知道的话:只有另外3个实例的rC发生了变化,这是另一个rC + = 1和rC = 0(随后进行初始化和复位)。 rC + = 1附近没有时间,或者没有时间。除此之外,rC只能读取,不能编辑。

1 个答案:

答案 0 :(得分:0)

几乎可以肯定,编译器会将变量中的值放在那里,以帮助您意识到它尚未初始化。 0xCC(十进制的204)通常用于自动/本地/“堆栈”变量。我不知道您的代码(似乎显示正在初始化的变量)与您声称产生的输出有何关系。建议您修改问题,并确保发布的问题最少,完整且可验证。