gpt4 book ai didi

c++ - 64位移位问题

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:25:37 24 4
gpt4 key购买 nike

为什么这段代码最后一个元素不写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;
}

最佳答案

当您将一个值移动的位数多于字长时,它通常会移动 mod word-size。基本上,将其移位 64 意味着移位 0 位,这等于根本没有移位。你不应该依赖它,因为它不是由标准定义的,并且它在不同的架构上可能有所不同。

关于c++ - 64位移位问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1024968/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com