Объясните странную работа массива
- Войдите на сайт для отправки комментариев
Пт, 10/05/2019 - 21:28
Привет, всем!
Скажите, пожалуйста, почему по этому коду загораются все светодиоды, а не 2?
int x = 13; int ledpin[4]; void setup() { for(int i; i<5; i++){ ledpin[i]=x; pinMode(ledpin[i], OUTPUT); x--; } } void loop() { for(int i = 3; i<5; i++){ digitalWrite(ledpin[i], HIGH); } }
А если заменить
int ledpin[4]
на
int ledpin[5]
То будут гореть, как и планировалось, только 2 светодиода
4 строка
for
(
int
i=чему?; i<5; i++)
Кроме того состояние остальных выходов у Вас не определено никак.
Между 6 и 7 строкой определите
digitalWrite(ledpin[i], LOW);Да и память распахивать не надо. Определили массив [4], так чего туда <5 пихать?
Скажите, пожалуйста, почему по этому коду загораются все светодиоды, а не 2?
А если заменить
на
То будут гореть, как и планировалось, только 2 светодиода
Потому, что нумерация элементов массивов в С/С++ начинается с 0. И если вы определили массив как
То при х=4 вы уже выходите за границы масиива, что может приводить к малопредсказуемым непритным последствиям. В случае int ledpin[5], все нормально.