#include <stdio.h> #include <stdint.h> #define BIT(n) (1U << (n)) typedef struct { uint8_t bit; const char *name; } StatusFlag; static const StatusFlag status_flags[] = { {0, "Power On"}, {1, "Error"}, {2, "Tx Ready"}, {3, "Rx Ready"}, {4, "Overheat"}, {5, "Undervoltage"}, {6, "Timeout"}, {7, "Reserved"} }; void decode_status(uint8_t status_reg) { for (int i = 0; i < 8; i++) { if (status_reg & BIT(status_flags[i].bit)) { printf("%s\n", status_flags[i].name); } } } int main() { uint8_t reg; scanf("%hhu", ®); decode_status(reg); return 0; }
Solving Approach
Test Cases
Test Results
Input
13
Expected Output
Power On Tx Ready Rx Ready