Ron*_*ard 8 c++ bit-manipulation
所以我只是尝试在C ++中进行一些操作。这是我尝试过的:
int a = 1<<2;
cout<<a;
Run Code Online (Sandbox Code Playgroud)
给出的输出为4。
int a = 1<<3;
cout<<a;
Run Code Online (Sandbox Code Playgroud)
这给出的输出为 8
但是当我这样做时:
int a = 1<<2 + 1<<3;
cout<<a;
Run Code Online (Sandbox Code Playgroud)
给出的输出为64。为什么这样?
我也尝试过:
int a = 1<<2;
int b = 1<<3;
cout<<a + b;
Run Code Online (Sandbox Code Playgroud)
给出12预期的输出。
这是因为加法运算符的优先级高于移位。换句话说,您的第二个示例等效于1 << (2 + 1) << 3
此外,由于移位是左关联的,因此与相同(1 << (2 + 1)) << 3。简化8 << 3为64。