关于c++移位操作

来源:百度知道 编辑:UC知道 时间:2024/05/21 15:52:30
#include <iostream>
using namespace std;
void main(){
unsigned i=1;
i<<1;
cout<<i;
}
为啥移位没效果呢
warning C4552: '<<' : operator has no effect; expected operator with side-effect

i<<1;

这一行没有效果,因为 i 左移一位后的结果没有赋值给任何变量,i 的值也没有改变,如果你是想把 i 左移一位并保存回原变量,可以:

i <<= 1; 或
i = (i << 1);

#include <iostream>
using namespace std;
void main()
{
unsigned short i = 1;
i<<=1; //错在这里,位移后没有赋值!
cout<<i;
}