Ви не увійшли.
Сторінки 1
Выходишь за пределы массива. В качестве первого индекса нужно использовать 0 и 1, а ты используешь 1 и 2.
Вот я тупой... В другом массиве-то так и делаю.
Спасибо огромное!!!!
Привет знатокам программирования Arduino.
Столкнулся со странным поведением 2-х мерного массива. Решил проверить содержимое.
Вот код:
const byte K_Dt=6; // Размерность массива
byte M_Dt[2][K_Dt]= // Объявление массива
{
{1,1,1,1,1,1}, // Заполнение массива
{1,1,1,1,1,1}
};
void setup()
{
for (byte N_Dt=0;N_Dt<K_Dt;N_Dt++) // Проверка заполнения массива
{
Serial.print("M_Dt[1][");
Serial.print(N_Dt);
Serial.print("]=");
Serial.print(M_Dt[1][N_Dt]);
Serial.print("\t");
Serial.print("M_Dt[2][");
Serial.print(N_Dt);
Serial.print("]=");
Serial.println(M_Dt[2][N_Dt]);
}
}
И вот что получилось в результате:
M_Dt[1][0]=1 M_Dt[2][0]=1
M_Dt[1][1]=1 M_Dt[2][1]=0
M_Dt[1][2]=1 M_Dt[2][2]=0
M_Dt[1][3]=1 M_Dt[2][3]=178
M_Dt[1][4]=1 M_Dt[2][4]=4
M_Dt[1][5]=1 M_Dt[2][5]=128
Если с первой строкой всё в порядке, то во второй - явно какой-то мусор.
Может кто подскажет, что приключилось? Казалось бы просто заполнение массива, а в результате...
Заранее спасибо всем откликнувшимся.
Отлично! Всё получилось, Вы безусловно правы "Х-1", вот где собака порылась!
Спасибо огромное.
Я всегда говорил, что Си - не самый лучший язык, в связи с дебильностью неудобством и неоднозначностью конструкций, сейчас получил очередное доказательство.
Ещё раз спасибо!!!!
Тернарный оператор это функция или выражение. X = X==0 ? Z : X--;
Попробовал, результат тот же самый.
НИ грамма не эквивалентно.
Поясните почему? Ведь в обоих случаях проверяется значение Х, и в зависимости от результата проверки присваивается новое значение.
Взято по аналогии из вот такого выражения:
digitalWrite(segmentsPins[7], (i == 1 ? HIGH : LOW));
И в этом примере всё работает прекрасно. Решил сделать по аналогии. Но что-то пошло не так...
По поводу обработки кнопки, просто взято из скетча, там у меня стоит такое примечание, забыл убрать.
А по поводу "быдлокода", это выражение из серии: "Тут так не роблять?" Выучив для себя определённые последовательности выражений (программных), всё, что выходит за рамки этих "заученностей" автоматически зачисляется в "быдлокод"?
Хочу использовать тернарный оператор при программировании, но имеется заковыка.
Вот код:
int Z=4;
int X=1;
// Обработка нажатия кнопок
X, (X==0 ? Z : X--);
Что эквивалентно:
int Z=4;
int X=1;
// Обработка нажатия кнопок
if (X==0) X=MenX;
else X--;
Второй вариант работает без проблем, а в случае использования тернарного оператора пока Х>0, всё работает, но при X==0, не происходит присвоения ему (Х) значения Z.
Кто-нибудь использовал тернарные операторы в своей практике?
Заранее спасибо всем откликнувшимся.
Сторінки 1