#include <stdio.h>
unsigned char modifyBit(unsigned char reg, int pos, int mode) {
// If set to 1 mode,
if (mode == 1) reg |= (1<<pos);
// If set to 0 mode,
else if (mode == 0) reg &= ~(1<<pos);
return reg;
}
int main() {
unsigned char reg;
int pos, mode;
scanf("%hhu %d %d", ®, &pos, &mode);
printf("%d", modifyBit(reg, pos, mode));
return 0;
}
First, I checked which mode was chosen by the user. Then, I set the bit and used the appropriate bitwise operator according to the mode.
I analyzed ways to reduce the code and settled on this fairly simplistic version. I feel like there are more compact and neater ways to write the code out but the version I settled on is simple and readable.
Input
10 3 1
Expected Output
10