一般的if语句
if( v < 10){
v + 48;
}
else{
v + 50;
}
改进之后的语句(没有分支了)
v + 55 - ( ( (v- 10) >> 15) & 7 );
解释
1、if语句可以改进为:v + ( v < 10 ? 48 : 50).
2、后面的三元运算符的原型就是 c ? x : y,此处替换成一个与此等价的表达式:y – ( c~ ? ( y – x ) : 0).
3、如果 c~用-1表示为真,0表示假的话,可以替换成另一个等价的表达式:y – ( c~ & ( y – x ) ).(-1与任何整数相位与结果不变).
4、与三元表达式结合起来 c~ = (v < 10)? -1 : 0,其中等号右边可以替换为(v – 10) >> 15(右移的时候用符号位填充移出去的位.如果为负数移位的结果就是-1,为正数移位的结果就是0)
最终我们全部进行替换的话结果就是这样的啦:v + 55 – ( ( (v- 10) >> 15) & 7 );
本文章有感于B站up主LH_Mouse
版权声明:本文为qq_43577471原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。