Я хочу определить логическое значение, которое отслеживает значения двух других логических величин и динамически обновляется при их изменении, как я могу этого достичь?
#include <stdio.h>
typedef struct candle_s {
bool is_on;
int flame_size;
}candle_t;
typedef struct led_s {
bool is_on;
int ampers;
}led_t;
typedef struct light_s {
bool is_any_on;
candle_t candle;
led_t led;
}light_t;
int main()
{
light_t light1;
light1.led = {0, 10};
light1.candle = {1, 20};
light1.is_any_on = light1.led.is_on | light1.candle.is_on;
printf("Is any on: %d, is light on %d, is candle on %d\n",
light1.is_any_on, light1.led.is_on, light1.candle.is_on);
light1.candle.is_on = 0;
printf("Is any on: %d, is light on %d, is candle on %d\n",
light1.is_any_on, light1.led.is_on, light1.candle.is_on);
return 0;
}
Вывод программы:
Is any on: 1, is light on 0, is candle on 1
Is any on: 1, is light on 0, is candle on 0
Как я могу сделать is_any_on "0"?
Я мог бы добиться этого с помощью функции, но могу ли я сделать это иначе ? Я думаю, что использование логического указателя тоже не сильно поможет, так как меня интересует результат двух логических значений.