2017-04-09 55 views
1

我想實現簡單的C語言代碼,因爲我是初學者。
我第一次使用OR操作在緩衝區8位大小然後應用右移操作。
我發現了一些奇怪的事情,有時我會加1,而不是0 &某些情況下正確添加0。爲什麼將操作移動1不是0?

我的代碼:

char buffer[0]={0x7e}; 
int bitsetcounter; 
int bitCounter; 
int s=1; 

int main() { 
    if (s=1) { 
     buffer[0]=buffer[0]|0x80; 
     bitsetcounter++; 
     bitCounter++; 
    } 

    buffer[0] >>=1; 
    printf("the buffer is %x",buffer[0]& 0xff); 
} 

輸出>>緩衝區是FF。 這裏爲什麼這樣的輸出?如果我通過添加0值轉移,我應該有7F不是ff?

+0

你或許應該學習任務之間的'='和相等比較'的差異= ='。 –

+2

'char'可能是在您的平臺上簽名的,所以您可能正確地移除了一個負數(這是不允許的)。 –

+0

哦,我知道了非常感謝你:) –

回答

1

更換

char buffer[0]={0x7e}; 

unsigned char buffer[0]={0x7e}; 

但仍然>>運營商平臺依賴

相關問題