while-loop - 为什么这个 Arduino while 循环永远不会结束?
问题描述
这可能是最糟糕的方法,但我希望 Arduino 在 1 和 -1 之间进行选择。此代码不起作用,有什么问题。
这是我对代码的理解:
int 定义为 0。
while 循环开始,因为条件为真。
选择一个随机变量。
如果 int 为 1 或 -1,则 while 循环结束并打印该值。
如果 int 为 0,则 while 循环重新启动。
int random_number = 0; void setup() { Serial.begin(9600); while (random_number == 0){ int random_number = random(-1,2); Serial.println(random_number); delay(1000); } Serial.print("value "); Serial.println(random_number); } void loop() { }
解决方案
问题是您random_number
再次在 while 循环内声明。这是循环局部范围内的一个新的不同变量,而不是在代码开头全局声明的变量。此外,它会在每个循环中再次声明。
int random_number = 0;
void setup() {
Serial.begin(9600);
while (random_number == 0){
random_number = random(-1,2); // not declared again
Serial.println(random_number);
delay(1000);
}
Serial.print("value ");
Serial.println(random_number);
}
void loop() {
}
请注意,int random_number
替换random_number
为循环内部。现在正在使用全局声明的变量random_number
,而不是声明一个具有相同名称的新局部变量。
推荐阅读
- node.js - Error: filtered policies are not supported by this adapter
- jquery - Get each element values separately from URL in jquery
- jmeter - How to load test 10k requests per second using jmeter?
- build-system - icecc - icecream seems to have invoked itself recursively
- javascript - input type date doesn't seem to work in chrome
- c# - 如何以编程方式将撇号插入 Cell 对象(Visio 插件)
- sql-server - 有两个更新语句的 DEADLOCK 可能是什么原因?
- android - Kotlin Firebase 实时数据库事务错误
- javascript - 在包含对象的数组上使用扩展运算符
- php - 包含函数中的文件