设计一个函数计算2n+1:
int func(int n) { return n << 1 + 1; }
使用左移一位代替乘以2的运算,是很好的方法,但在C/C++中“+”运算符优先级高于“<<”,因此会先进行加法运算再左移两位,得到结果4*n。
正确写法是:
int func(int n) { return (n << 1) + 1; }
运算符优先级问题
原文:http://blog.csdn.net/u011421608/article/details/44316625