我在这里一定是疯了,但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;
}
现在,任何本身右移的数字都应该导致0(n/(2^n) == 0
带有整数除法、n>1
和正/无符号),但不知何故这是我的输出:
100000
100000
100000
我疯了吗?可能会发生什么?