所以我只是尝试用 C++ 进行一些位操作。这是我尝试过的:
int a = 1<<2;
cout<<a;
这给出的输出为4
.
int a = 1<<3;
cout<<a;
这给出的输出为8
但是当我这样做时:
int a = 1<<2 + 1<<3;
cout<<a;
它给出的输出为64
。为什么这样?
我也尝试过:
int a = 1<<2;
int b = 1<<3;
cout<<a + b;
输出为12
正如预期的那样。
这是因为加法的运算符优先级高于移位运算符。换句话说,你的第二个例子相当于1 << (2 + 1) << 3
此外,由于位移是左关联的,所以它与(1 << (2 + 1)) << 3
。这简化为8 << 3
,即64
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)