Объясните странную работа массива
- Войдите на сайт для отправки комментариев
Пт, 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(inti=чему?; i<5; i++)Кроме того состояние остальных выходов у Вас не определено никак.Между 6 и 7 строкой определитеdigitalWrite(ledpin[i], LOW);Да и память распахивать не надо. Определили массив [4], так чего туда <5 пихать?
Скажите, пожалуйста, почему по этому коду загораются все светодиоды, а не 2?
А если заменить
на
То будут гореть, как и планировалось, только 2 светодиода
Потому, что нумерация элементов массивов в С/С++ начинается с 0. И если вы определили массив как
То при х=4 вы уже выходите за границы масиива, что может приводить к малопредсказуемым непритным последствиям. В случае int ledpin[5], все нормально.