为什么这段代码不写0作为最后一个元素但是18446744073709551615?(用g ++编译)
#include <iostream>
using namespace std;
int main(){
unsigned long long x = (unsigned long long) (-1);
for(int i=0; i <= 64; i++)
cout << i << " " << (x >> i) << endl;
cout << (x >> 64) << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
Meh*_*ari 13
当您将值移位多于字大小时,它通常会被移位mod word-size.基本上,将其移位64意味着移位0位,这相当于根本没有移位.您不应该依赖于此,因为它不是由标准定义的,并且在不同的体系结构上可能有所不同.