#1 2019-09-27 21:19:44

Homo Faber
Учасник
Зареєстрований: 2019-09-27
Повідомлень: 7

Использование тернарного оператора при программировании Arduino UNO

Хочу использовать тернарный оператор при программировании, но имеется заковыка.
Вот код:

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.
Кто-нибудь использовал тернарные операторы в своей практике?
Заранее спасибо всем откликнувшимся.

Неактивний

#2 2019-09-27 21:36:46

Watchdog
Гість

Re: Использование тернарного оператора при программировании Arduino UNO

Тернарный оператор это функция или выражение. X = X==0 ? Z : X--;

#3 2019-09-27 23:03:02

Kaka
Учасник
Зареєстрований: 2018-03-21
Повідомлень: 384

Re: Использование тернарного оператора при программировании Arduino UNO

Homo Faber пише:

Что эквивалентно:

НИ грамма не эквивалентно.

Что там вообще делает операция запятая?

Неактивний

#4 2019-09-27 23:53:02

Avazart
Учасник
Зареєстрований: 2019-05-05
Повідомлень: 181

Re: Использование тернарного оператора при программировании Arduino UNO

X, (X==0 ? Z : X--);

Это быдлокод, нормальные люди так не пишут. По тому что не читается, так еще можно нарваться на "точки следования".
Используйте if.

Остання редакція Avazart (2019-09-27 23:54:17)

Неактивний

#5 2019-09-28 08:09:04

vvr
Учасник
Зареєстрований: 2015-04-12
Повідомлень: 716

Re: Использование тернарного оператора при программировании Arduino UNO

а нафига в обработке кнопки это использовать.

Неактивний

#6 2019-09-28 08:30:41

Homo Faber
Учасник
Зареєстрований: 2019-09-27
Повідомлень: 7

Re: Использование тернарного оператора при программировании Arduino UNO

Взято по аналогии из вот такого выражения:

digitalWrite(segmentsPins[7], (i == 1 ?  HIGH : LOW));

И в этом примере всё работает прекрасно. Решил сделать по аналогии. Но что-то пошло не так...
По поводу обработки кнопки, просто взято из скетча, там у меня стоит такое примечание, забыл убрать.
А по поводу "быдлокода", это выражение из серии: "Тут так не роблять?" Выучив для себя определённые последовательности выражений (программных), всё, что выходит за рамки этих "заученностей" автоматически зачисляется в "быдлокод"?

Неактивний

#7 2019-09-28 08:48:31

Homo Faber
Учасник
Зареєстрований: 2019-09-27
Повідомлень: 7

Re: Использование тернарного оператора при программировании Arduino UNO

Watchdog пише:

Тернарный оператор это функция или выражение. X = X==0 ? Z : X--;

Попробовал, результат тот же самый.

Kaka пише:

НИ грамма не эквивалентно.

Поясните почему? Ведь в обоих случаях проверяется значение Х, и в зависимости от результата проверки присваивается новое значение.

Неактивний

#8 2019-09-28 09:12:29

Watchdog
Гість

Re: Использование тернарного оператора при программировании Arduino UNO

Homo Faber пише:
Watchdog пише:

Тернарный оператор это функция или выражение. X = X==0 ? Z : X--;

Попробовал, результат тот же самый.

Kaka пише:

НИ грамма не эквивалентно.

Поясните почему? Ведь в обоих случаях проверяется значение Х, и в зависимости от результата проверки присваивается новое значение.

Возможно, потому, что декремент Х постфиксный. Я привел это выражение как шаблон. Теоретически: X = X==0 ? Z : X--; <=> X = X==0 ? Z : X-1; Но практика, к сожалению, не всегда совпадает с теорией. Придайте ему необходимый вам смысл самосточтельно;

#9 2019-09-28 09:24:27

Homo Faber
Учасник
Зареєстрований: 2019-09-27
Повідомлень: 7

Re: Использование тернарного оператора при программировании Arduino UNO

Отлично! Всё получилось, Вы безусловно правы "Х-1", вот где собака порылась!
Спасибо огромное.
Я всегда говорил, что Си - не самый лучший язык, в связи с дебильностью неудобством и неоднозначностью конструкций, сейчас получил очередное доказательство.
Ещё раз спасибо!!!!

Неактивний

#10 2019-09-28 09:33:11

Watchdog
Гість

Re: Использование тернарного оператора при программировании Arduino UNO

Homo Faber пише:

Отлично! Всё получилось, Вы безусловно правы "Х-1", вот где собака порылась!
Спасибо огромное.
Я всегда говорил, что Си - не самый лучший язык, в связи с дебильностью неудобством и неоднозначностью конструкций, сейчас получил очередное доказательство.
Ещё раз спасибо!!!!

Идеальных языков программирования и компиляторов не бывает. C/C++ один из самых общепризнанных языков системного программирования, вопреки всем пересудам некотрых теоретиков.

#11 2019-09-28 12:38:31

Avazart
Учасник
Зареєстрований: 2019-05-05
Повідомлень: 181

Re: Использование тернарного оператора при программировании Arduino UNO

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)

Неактивний

#12 2019-09-28 14:48:00

Homo Faber
Учасник
Зареєстрований: 2019-09-27
Повідомлень: 7

Re: Использование тернарного оператора при программировании Arduino UNO

Ню-ню...  tongue

Неактивний

#13 2019-09-30 22:51:36

NoName
Customer
З Київ
Зареєстрований: 2014-07-08
Повідомлень: 1,446

Re: Использование тернарного оператора при программировании Arduino UNO

Homo Faber пише:

Отлично! Всё получилось, Вы безусловно правы "Х-1", вот где собака порылась!
Спасибо огромное.
Я всегда говорил, что Си - не самый лучший язык, в связи с дебильностью неудобством и неоднозначностью конструкций, сейчас получил очередное доказательство.
Ещё раз спасибо!!!!

ROFL
благодарю, улыбнуло  )

Неактивний

Швидке повідомлення

Введіть повідомлення і натисніть Надіслати

Підвал форуму