Вложенный цикл
Не уверен, что я действительно веду себя глупо, но почему это не работает?
void setup() {
Serial.begin(9600);
}
void loop() {
for (int x; x < 8; x++) {
for (int y; y < 8; y++) {
Serial.print(x);
Serial.println(y);
delay(100);
}
}
}
Когда это произойдет:
void setup() {
Serial.begin(9600);
}
void loop() {
for (int x; x < 8; x++) {
Serial.println(x);
delay(100);
}
}
Первый не выводит данные через Serial, тогда как второй выводит числа от 0 до 7, как и ожидалось. Я использую Teensy 3.1.
@Alfo, 👍0
Обсуждение1 ответ
Лучший ответ:
Вы не инициализируете x и y.
Когда локальная переменная не инициализирована, она «унаследует» значение, содержащееся в регистре, назначенном переменной компилятором. Тот факт, что ваш пример с одним циклом сработал, является чистой удачей — назначенный регистр в тот момент выполнения содержал 0.
Измените вложенный цикл следующим образом:
for (int x = 0; x < 8; x++) {
for (int y = 0; y < 8; y++) {
Serial.print(x);
Serial.println(y);
delay(100);
}
}
И это сработает.
Примечание: глобальные переменные, с другой стороны, гарантированно инициализируются нулем по стандарту c++. Компилятор обязательно запишет нули в эти адреса памяти до того, как будет выполнен основной код программы.
Я слишком долго писал на Ruby..., @Alfo
- Как прервать соединение HM10 Bluetooth?
- Асимметричное шифрование на Teensy?
- Как объявить массив переменного размера (глобально)
- Программирование Arduino с использованием Python, а не C/C ++
- Загрузка Arduino Nano дает ошибку: avrdude: stk500_recv(): programmer is not responding
- Как справиться с rollover millis()?
- Является ли использование malloc() и free() действительно плохой идеей для Arduino?
- Можно ли сделать несколько функций loop() с помощью Arduino Uno?
Очень странно... у меня не работает на Mega 2560. Должно быть, я упускаю что-то очевидное :-), @Anonymous Penguin
да, очевидно:
int x = 0;
внутри операторовfor()
(кстати, то же самое и дляy
)..., @jfpoilpret![введите описание изображения здесь](https://i.stack.imgur.com/uBc1D.jpg) Как решить вопрос 18?, @Shamma