Пока есть один ответ, который меняет местами последние две цифры, и один, который меняет местами первые две ... мне кажется, что "%0*u", OP_LEN
принудительно выводит вывод на определенную ширину, и значение извлеченных цифр предопределяется с помощью OP_LEN
.
Предполагая, что OP_LEN
является макросом, мы можем получить 10 ^ (OP_LEN-2) с
#define DIVISOR ( (int) ( 1.e ## OP_LEN * 0.01 ) )
Затем, аналогично ответу @ zneak,
int extract_op( int instruction )
{
instruction /= DIVISOR;
int tens = (instruction / 10) % 10;
int units = instruction % 10;
return units * 10 + tens;
}
#undef DIVISOR