如何简化此代码?
if (x == 0) x = 1;
else if (x == 1) x = 0;
else if (x == 2) x = 3;
else if (x == 3) x = 2;
Mar*_*ers 15
如果x始终在0到3之间,那么试试这个:
x ^= 1;
Run Code Online (Sandbox Code Playgroud)
它切换最不重要的位.
如果x可以是0到3之间的值,那么您可以先测试:
if (x >= 0 && x <= 3) {
x ^= 1;
}
Run Code Online (Sandbox Code Playgroud)
这是最简单的形式:
if (x == 0) x = 1;
else if (x == 1) x = 0;
else if (x == 2) x = 3;
else if (x == 3) x = 2;
Run Code Online (Sandbox Code Playgroud)
等等......这正是你的代码.
神秘的一个衬里并不简单.
要使用伪代码表示法,可能:
if (x % 2 == 0) x = x + 1
else x = x - 1
Run Code Online (Sandbox Code Playgroud)
例如,如果是偶数,则添加一个,否则减去?然而,在优化方面,我没有看到原始代码的特别慢或错.
你可以使用这样的东西:
int mymap[4] = {1,0,3,2};
Run Code Online (Sandbox Code Playgroud)
然后在你的代码中使用这个:
x = mymap[x];
Run Code Online (Sandbox Code Playgroud)