我是C的绝对初学者,我正在努力学习位移。我写了一个小程序,通过右移来测试分区。
以下是代码:
#include<stdio.h>
int shift_divide_by_16(int x);
int main() {
int x = 32;
int y = shift_divide_by_16(x);
printf("%d\n", y);
return 0;
}
int shift_divide_by_16(int x) {
x >> 4;
printf("%d\n", x);
return x;
}
该程序打印32 32
。为什么不打印2 2
?
感谢。
答案 0 :(得分:4)
您需要将值分配回x
x = x >> 4
答案 1 :(得分:2)
您也可以使用:
x >>= 4;