Ви не увійшли.
Хочу использовать тернарный оператор при программировании, но имеется заковыка.
Вот код:
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.
Кто-нибудь использовал тернарные операторы в своей практике?
Заранее спасибо всем откликнувшимся.
Неактивний
Тернарный оператор это функция или выражение. X = X==0 ? Z : X--;
X, (X==0 ? Z : X--);
Это быдлокод, нормальные люди так не пишут. По тому что не читается, так еще можно нарваться на "точки следования".
Используйте if.
Остання редакція Avazart (2019-09-27 23:54:17)
Неактивний
Взято по аналогии из вот такого выражения:
digitalWrite(segmentsPins[7], (i == 1 ? HIGH : LOW));
И в этом примере всё работает прекрасно. Решил сделать по аналогии. Но что-то пошло не так...
По поводу обработки кнопки, просто взято из скетча, там у меня стоит такое примечание, забыл убрать.
А по поводу "быдлокода", это выражение из серии: "Тут так не роблять?" Выучив для себя определённые последовательности выражений (программных), всё, что выходит за рамки этих "заученностей" автоматически зачисляется в "быдлокод"?
Неактивний
Тернарный оператор это функция или выражение. X = X==0 ? Z : X--;
Попробовал, результат тот же самый.
НИ грамма не эквивалентно.
Поясните почему? Ведь в обоих случаях проверяется значение Х, и в зависимости от результата проверки присваивается новое значение.
Неактивний
Watchdog пише:Тернарный оператор это функция или выражение. X = X==0 ? Z : X--;
Попробовал, результат тот же самый.
Kaka пише:НИ грамма не эквивалентно.
Поясните почему? Ведь в обоих случаях проверяется значение Х, и в зависимости от результата проверки присваивается новое значение.
Возможно, потому, что декремент Х постфиксный. Я привел это выражение как шаблон. Теоретически: X = X==0 ? Z : X--; <=> X = X==0 ? Z : X-1; Но практика, к сожалению, не всегда совпадает с теорией. Придайте ему необходимый вам смысл самосточтельно;
Отлично! Всё получилось, Вы безусловно правы "Х-1", вот где собака порылась!
Спасибо огромное.
Я всегда говорил, что Си - не самый лучший язык, в связи с дебильностью неудобством и неоднозначностью конструкций, сейчас получил очередное доказательство.
Ещё раз спасибо!!!!
Неактивний
Отлично! Всё получилось, Вы безусловно правы "Х-1", вот где собака порылась!
Спасибо огромное.
Я всегда говорил, что Си - не самый лучший язык, в связи с дебильностью неудобством и неоднозначностью конструкций, сейчас получил очередное доказательство.
Ещё раз спасибо!!!!
Идеальных языков программирования и компиляторов не бывает. C/C++ один из самых общепризнанных языков системного программирования, вопреки всем пересудам некотрых теоретиков.
https://forum.arduino.ua/edit.php?id=29353#
Решил сделать по аналогии.
А вышло по АНАЛОгии. )))
Копипаст через опу не канает, нужно вникать в то как оно работает.
что выходит за рамки этих "заученностей" автоматически зачисляется в "быдлокод"?
По сути да программирование это не картины маслом писать.
На "я ХУДОжник, я так вижу" следует "пошел со своим кодом .."
сейчас получил очередное доказательство.
Остальные же наблюдают как еще один неосилятор слился.
P.S.:
digitalWrite(segmentsPins[7], (i == 1 ? HIGH : LOW));
Так то же не пишут, можно более кратко
digitalWrite(segmentsPins[7], i==1);
Остання редакція Avazart (2019-09-28 12:51:57)
Неактивний
Ню-ню...
Неактивний
Отлично! Всё получилось, Вы безусловно правы "Х-1", вот где собака порылась!
Спасибо огромное.
Я всегда говорил, что Си - не самый лучший язык, в связи с дебильностью неудобством и неоднозначностью конструкций, сейчас получил очередное доказательство.
Ещё раз спасибо!!!!
ROFL
благодарю, улыбнуло )
Неактивний