变量神秘地设置为 204
Variable misteriously being set to 204
第一次使用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
我使用的 "fix" 非常糟糕,如果我更改其他一些变量,它就不会工作,但它可以解决这个问题。
知道是什么原因造成的吗?
万一有人想知道:只有 3 个其他实例更改了 rC,它是另一个 rC +=1 和一个 rC = 0(稍后初始化和重置)。 rC+=1 附近没有 while 或 for anywhere;除此之外,rC 只能读取,不能编辑。
您的变量中的值几乎可以肯定是由您的编译器放在那里的,目的是帮助您意识到它未初始化。 0xCC(十进制为 204)通常用于自动/本地/"stack" 变量。我不知道您的代码(似乎显示正在初始化的变量)与您声称产生的输出有何关系。我建议您修改您的问题,并确保您发布的问题示例最少、完整且可验证。
第一次使用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
我使用的 "fix" 非常糟糕,如果我更改其他一些变量,它就不会工作,但它可以解决这个问题。 知道是什么原因造成的吗?
万一有人想知道:只有 3 个其他实例更改了 rC,它是另一个 rC +=1 和一个 rC = 0(稍后初始化和重置)。 rC+=1 附近没有 while 或 for anywhere;除此之外,rC 只能读取,不能编辑。
您的变量中的值几乎可以肯定是由您的编译器放在那里的,目的是帮助您意识到它未初始化。 0xCC(十进制为 204)通常用于自动/本地/"stack" 变量。我不知道您的代码(似乎显示正在初始化的变量)与您声称产生的输出有何关系。我建议您修改您的问题,并确保您发布的问题示例最少、完整且可验证。