基础问题
1.运算符优先级问题
//错误代码
//To get 2*n + 1
int func(int n){
return n<< 1 + 1;
}
期望计算2*n + 1,运行结果确是4*n,原因是"+"优先级比"<<"高。
//正确代码
int func(int n){
{
return (n<< 1) + 1;
}
顺便提一下遇到一个关于cout输出流的问题
cout<< 1<< 2 + 1; //输出结果为13
cout<<endl;
cout<< (1<< 2 + 1); //输出结果为8
cout<< 1<< 2+1;这句代码可以转化为cout<<1和cout<<2 + 1,结果就是13;而cout<< (1<< 2+1)执行方式是先执行1 + 2,再左移3,输出8。