我必须在这里绝对疯狂,但gcc 4.7.3在我的机器上给出了最荒谬的结果.这是我正在测试的确切代码:
#include <iostream>
using namespace std;
int main(){
unsigned int b = 100000;
cout << (b>>b) << endl;
b = b >> b;
cout << b << endl;
b >>= b;
cout << b << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
现在,这是正确的本身转移任意数量应该导致0(n/(2^n) == 0与整数除法,n>1和正/无符号),但不知何故,这里是我的输出:
100000
100000
100000
Run Code Online (Sandbox Code Playgroud)
我疯了吗?可能会发生什么?