的,我注意到一些奇怪的行爲與支架Bitshifts抵消,而不是預期的行爲
bitshifting#include <stdio.h>
int main(void)
{
unsigned char c;
unsigned char d;
c = 153;
c = (c << 7) >> 7;
printf("%d\n", c);
d = 153;
d = (d << 7);
d = (d >> 7);
printf("%d\n", d);
}
輸出:
153
1
我預計c
也有1 ...值怎麼回事上?這是不確定的?
看看生成的代碼以及它的功能。 –
與[this]類似(https://stackoverflow.com/questions/33068985/sizeof-an-integer-expression-in-c)問題。表達式被評估爲一個整數,然後存儲爲char。與中間步驟中的字符對比。 – matt
沒問題,lemmi只能使用類型轉換 –