2014-08-31 65 views
0

我是C中的絕對初學者,並且正在嘗試學習位移。我寫了一個小程序,通過右移來測試分區。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

謝謝。

+1

也許你的意思是寫'X = X >> 4'。 'x >> 4'是一個*值*,它不做任何事情。 – hobbs 2014-08-31 19:53:57

+0

'x >> 4;'做一個右移,然後拋棄結果。將其設爲某種東西 – 2014-08-31 19:54:17

+0

謝謝!它現在有效。 – mrQWERTY 2014-08-31 19:54:40

回答

4

你最好的東東的值分配回X

x = x >> 4 
2

您還可以使用:

x >>= 4;