Question 11 of 146 points

Question 11 · 6 points

Bit-flag permissions

Implement update_permission without separate if statements for individual permissions.

#define CAN_READ    (1u << 0)
#define CAN_WRITE   (1u << 1)
#define CAN_EXECUTE (1u << 2)
#define IS_ADMIN    (1u << 3)

typedef struct {
    unsigned permissions;
} user_t;

void update_permission(
    user_t *user,
    unsigned mask,
    int enabled
);

When enabled is non-zero, set every bit selected by mask. Otherwise, clear every selected bit. Bits not selected by mask must remain unchanged. Explain both bitwise expressions.

Your response

Your answer

0 words