Запутанные операторы условий
Я работаю над проектом по созданию розетки с таймером, используя Arduino и датчик тока. Для кода я решил изменить код, который должен был быть кухонным таймером.
В этом коде я нашел оператор
currentMode = currentMode == MODE_IDLE ? MODE_RUNNING : MODE_IDLE;
Я предположил, что это работает таким образом, что он выбирает, находится ли таймер в текущем режиме или в режиме ожидания, но я не понимаю механизма, стоящего за этим. Что означает это утверждение?
@ulama, 👍0
Обсуждение1 ответ
Лучший ответ:
Предполагая, что вы понимаете, как работает тернарный оператор, оператор просто переключает текущий режим между двумя возможными настройками.
если вы не понимаете тернарные операторы, это можно переписать так:
if (currentMode == MODE_IDLE) {
currentMode = MODE_RUNNING;
} else {
currentMode = MODE_IDLE;
}
Вы должны прочитать об операторе тройной
. Он доступен на нескольких языках в различных форматах и может пригодиться в различных ситуациях.
В общих чертах тернарный оператор имеет следующую форму (используется в присваивании):
result = (booleanExpression) ? (value if true) : (value if false);
но вы можете использовать его и в других контекстах, например, в вызове функции:
someFn(booleanExpression ? trueValue : falseValue);
Интернету нужно еще одно объяснение тернарного оператора?, @Juraj
- Данные DHT11 из Arduino UNO в Firebase через ESP8266
- Объяснение кода MPU6050
- Как я могу прервать задержку() при нажатии кнопки?
- Проблема с открытием нескольких текстовых файлов одновременно/по порядку с использованием <SD.h>
- Как остановить серводвигатель в текущем положении при использовании последовательного порта? Я хочу, чтобы он оставался в одном положении при получении «0».
- Как установить управляющий регистр в модуле RTC DS3231 для Arduino UNO R3?
- Как повторить другое действие внутри цикла?
- Клиент веб-сокета Arduino CC3000
это
if (currentMode == MODE_IDLE) {currentMode = MODE_RUNNING;} else {currentMode = MODE_IDLE;}
, @Jurajhttp://www.tutorialspoint.com/ansi_c/ternary_operator_examples.htm, @Juraj
Я думаю, что добавление скобок делает его более читабельным:
currentMode = (currentMode == MODE_IDLE)? MODE_RUNNING : MODE_IDLE;
, @Filip Franik