gpt4 book ai didi

C - 需要将 unsigned int 一次右移一个位置。

转载 作者:太空宇宙 更新时间:2023-11-04 05:03:53 25 4
gpt4 key购买 nike

我需要将一个 unsigned int 向右移动超过 32 次,并且仍然得到正确的零答案而不是随机数或原始数。例如 8 >> 40 应该 = 0 但它返回一个随机数。

我知道一次移动一个位置的循环可以解决这个问题,因为它会在移动时填充零。但是,出于某种原因,我当前的代码不起作用。我究竟做错了什么?

unsigned int shiftR(unsigned int a, unsigned int b) {
unsigned int i=0;
while (i < b) {
a >> 1;
i++;
}
return a;
}

这给了我一个编译警告,它没有效果 (a >> 1;)。怎么会?

谢谢!

最佳答案

您想使用 a >>= 1;a = a >> 1; 这是因为 a >> 1 移位a向右移动一次并返回结果。它不会将结果分配给 a

关于C - 需要将 unsigned int 一次右移一个位置。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7054317/

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