任何人都可以解釋一下,新手C程序員會理解這個函數的作用麼?解釋這個函數的作用
unsigned getunsigned(unsigned char *bufp, int len) {
unsigned value = 0;
int shift = 0;
while (len--) {
value |= *bufp++ << shift;
shift += 8;
}
return value;
}
我想這是給我的最麻煩繞到我的頭行:
value |= *bufp++ << shift;
而且,任何人都可以提供一種方式來重新寫這個所以這是更清晰一個沒有經驗的C程序員要了解?
我在做一項任務研究的同時在網上發現了這個代碼,我不想使用它,除非我完全理解它在做什麼以及它是如何做的。
'* bufp ++'應該在左移之前轉換爲'unsigned'。否則,默認情況下它會被提升爲「int」,並且當移位爲最高字節時,結果可能會超過int中可表示的結果。那麼行爲是不確定的。 –