era*_*ros 7 c++ bitwise-operators
int main()
{
int i=3;
(i << 1);
cout << i; //Prints 3
}
Run Code Online (Sandbox Code Playgroud)
由于左移一位,我预计会得到6分.为什么不起作用?
Mik*_*ley 19
因为位移运算符返回一个值.
你要这个:
#include <iostream>
int main()
{
int i = 3;
i = i << 1;
std::cout << i;
}
Run Code Online (Sandbox Code Playgroud)
轮班操作员不会"就地"转移.你可能会想到另一个版本.如果他们这样做,就像许多其他C++二元运算符一样,那么我们就会发生非常糟糕的事情.
i <<= 1;
int a = 3;
int b = 2;
a + b; // value thrown away
a << b; // same as above
Run Code Online (Sandbox Code Playgroud)