1》编写一个自定义的函数shift_right:利用引用形参实现对一个int型的数据右移n位。
代码如下:
#include<iostream>
using namespace std;
void shift_right(int &num,int n);
int main(){
int num=8;
cout<<"before shift ,num:"<<num<<endl;
shift_right(num,2);
cout<<"after shift ,num:"<<num<<endl;
return 0;
}
void shift_right(int &num,int n){
num>>n;
}
运行结果如下:
为什么 没有实现右移的功能呢?
看编译的提示:warning C4552: '>>' : operator has no effect; expected operator with side-effect
大致意思是:操作符“>>”未产生任何影响;期望使用能产生side-effect的操作符。
2》将上述shift_right函数做如下更改:
void shift_right(int &num,int n){
num>>=n;
}
即将“>>”更改为“>>=”.
再次运行该程序,结果如下:
可以发现,结果正常了,warning也没有了。
ps:warning有时候也是不可忽视的。