我需要將一個無符號整數向右移動超過32次,仍然得到零而不是隨機或原始數的正確答案。例如,8 >> 40應該= 0,但它返回一個隨機數。C - 需要一次將一個無符號整數移到一個地方。
我知道一次一個地方移動一個地方的循環可以解決這個問題,因爲它會填充零。不過,我目前的代碼不適用於某些原因。我究竟做錯了什麼?
unsigned int shiftR(unsigned int a, unsigned int b) {
unsigned int i=0;
while (i < b) {
a >> 1;
i++;
}
return a;
}
這給了我一個編譯警告,它沒有任何效果(a >> 1;)。怎麼來的?
謝謝!
非常感謝! – RedFred