c言語で、ある特定の1バイトを指定した1バイトに変える関数を作成したいです。

int okikae(0x12345678, 0xFF, 2) // 0x12FF5678 が戻り値
int okikae(0x12345678, 0xFF, 0) // 0x123456FF が戻り値

といった具合で、演算子を ~!|&^+>><<だけ使い、かつif文やwhile文、変数宣言などをせずに作りたいのですがどのようにすれば良いでしょうか?