按位运算符产生不同的结果

问题描述

我只是在尝试移位运算符并注意到一些非常非常奇怪的事情。

考虑下面的代码

unsigned a = 1;
// ========== approach 1
for (int i = 0; i < 32; ++i)
a <<= 1;
// ========== approach 2
a <<= 32;

std::cout << a;

我得到了不同的结果

approach 1 => 0
approach 2 => 1

注意:在 x86 arch 上运行这个

有人可以向我解释为什么吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)