Почему этот чрезвычайно простой код не работает?

У меня есть проблема с циклом for, и Serial.print("Its Working") не появляется. Кажется простым, я делал это раньше, но теперь по какой-то причине это больше не работает

void setup() {
  // поместите свой установочный код здесь, чтобы запустить его один раз:
  Serial.begin(9600);
}

void loop() {
  // поместите свой основной код здесь, чтобы запустить его повторно:

  for (int x = 0; x > 10; x++) {

    Serial.println("Its Working");
    delay(1000);
  }
}

, 👍1


1 ответ


Лучший ответ:

6

Проблема заключается в следующем:

for (int x = 0; x > 10; x++) {

Это может быть переписано, в псевдо-коде, как:

  • X равно нулю
  • В то время как X больше 10:
    • Приращение X

Видишь, в чем проблема? X равно нулю. Он не больше 10, поэтому никогда не увеличивается.

Я предполагаю, что вы на самом деле хотели:

for (int x = 0; x < 10; x++) {

Также имейте в виду, что ваш цикл for будет выполняться снова и снова, так что вы никогда не увидите, как он закончится. Вы должны добавить

Serial.println("Loop done");

в конце, чтобы вы знали, что все кончено.

,

По сути, цикл for никогда не запускается, когда он в первый раз проверяет условие, оно уже ложно, верно?, @Coder9390

@Coder9390 Это верно., @Majenko

@Coder9390: Вы можете убедиться в этом сами, выполнив один шаг кода с помощью отладчика. Вы увидите, как выполнение пропускается по циклу, даже не входя в тело цикла. Это ваш намек на то, что вы случайно написали условие цикла, которое является ложным при первой проверке. Помните, что цикл for в основном совпадает с "частью 1;" / " в то время как(часть 2){ ...; часть 3;}", поэтому, как и в цикле while, условие проверяется перед первым входом в цикл., @Peter Cordes

@Coder9390: Использование отладчика необходимо для низкоуровневых задач, где такие альтернативы, как разбрызгивание инструкций отладочной печати в вашем коде, нелегки, или чтобы помочь поймать пукающие мозги, когда что-то, что вы считаете правильным, на самом деле было проблемой., @Peter Cordes