算法改进
请问各路大侠下面这个语句能改进么?
byte myClip(int num)
{
return (byte)(num > 255 ? 255 : num > 0 ? num : 0);
}
------解决方案--------------------没有什么改进的必要。如果非要说改进的话,那就是你应该拆开这两个三元表达式。因为在num<0和num>255的时候会进行多余的判断和处理
if(num < 0)
return 0;
else if(num > 255)
return 255;
else
return (byte)num;
------解决方案--------------------这样子可以吗?
return num < 255 ? (byte)(num & (((uint)num >> 31) - 1)) : 255;
------解决方案--------------------if(num>255)
num=255;
else if(num<0)
num=0;
return (byte)num;
------解决方案--------------------
不要欺负楼主
------解决方案--------------------
不能光看CPU占用,还要看调用次数,综合的来看。
如果想单纯优化这个方法,首先就像我上面说的,你的两个嵌套的三元表达式首先要拆开,避免多余的操作。
然后你可以分析一下数据,看看那种数据多,大于255,小于0,处于之间,再决定判断的顺序。